预提取 Chromium 二进制文件
本文介绍如何在 .NET 构建或发布流程中预提取 DotNetBrowser Chromium 二进制文件。
在使用 DotNetBrowser 的 .NET 应用程序中,请使用 DotNetBrowser.Chromium.Extraction NuGet 包。
如果你还需要应用白标品牌,例如可执行文件名称、图标或 macOS bundle 元数据,请参阅 品牌化 Chromium 二进制文件。
DotNetBrowser 会与库一起部署 Chromium 二进制文件。在大多数应用程序中,DotNetBrowser 会自动提取并使用这些二进制文件。本文介绍的包适用于你希望对构建、发布和部署流程拥有更多控制的场景:
DotNetBrowser.Chromium.Extraction会在dotnet build或dotnet publish期间提取 DotNetBrowser Chromium 二进制文件。
该包通过应用程序项目文件中的 MSBuild 属性进行配置。
前提条件
开始之前,请确保应用程序项目已引用 DotNetBrowser API 包以及与目标运行时匹配的平台特定 Chromium 包。API 包提供应用程序使用的 .NET API,而 Chromium 包提供提取工具处理的对应 Chromium 二进制文件。
支持的软件包及平台特定安装选项的完整列表,请参阅 从 NuGet 安装。
请在与目标运行时相同的操作系统家族上执行提取。例如,在 Linux 上提取 Linux 二进制文件,在 macOS 上提取 macOS 二进制文件。这样可以保留可执行权限、符号链接和平台 bundle 结构。
DotNetBrowser.Chromium.Extraction
DotNetBrowser.Chromium.Extraction 是一个 MSBuild 任务包,用于从平台特定的 DotNetBrowser.Chromium.*.dll 程序集中提取 Chromium 二进制文件。
当你需要将解包后的 Chromium 二进制文件用于构建、发布、部署、容器镜像或 CI/CD 产物时,请使用此包。
该包使用包含压缩 Chromium 二进制文件的 DotNetBrowser.Chromium.*.dll 程序集。
安装 DotNetBrowser.Chromium.Extraction
将该包添加到应用程序项目中:
<ItemGroup>
<PackageReference Include="DotNetBrowser.Chromium.Extraction"
Version="..."
PrivateAssets="all" />
</ItemGroup>
PrivateAssets="all" 可以将构建辅助包限制在当前项目内。对于应用程序项目,推荐使用该设置,因为此包提供的是 MSBuild 任务,而不是需要向下游消费者传递的运行时 API。
在构建期间提取
要在 Build 目标之后提取 Chromium 二进制文件,请添加以下属性:
<PropertyGroup>
<DotNetBrowserExtractionEnabled>true</DotNetBrowserExtractionEnabled>
<DotNetBrowserExtractionDuringBuild>true</DotNetBrowserExtractionDuringBuild>
</PropertyGroup>
然后构建项目:
dotnet build -c Release
默认情况下,构建期提取使用:
- 源:
$(OutputPath) - 目标:
$(TargetDir)unpacked/
解析后的提取输出路径会记录在 MSBuild 输出中的 DotNetBrowserExtractionBuildOutputPath。
在发布期间提取
要在 Publish 目标之后提取 Chromium 二进制文件,请启用发布期提取:
<PropertyGroup>
<DotNetBrowserExtractionEnabled>true</DotNetBrowserExtractionEnabled>
<DotNetBrowserExtractionDuringPublish>true</DotNetBrowserExtractionDuringPublish>
</PropertyGroup>
然后发布应用程序:
dotnet publish -c Release -r win-x64
默认情况下,发布期提取使用:
- 源:
$(PublishDir) - 目标:
$(PublishDir)unpacked/
解析后的提取输出路径会记录在 MSBuild 输出中的 DotNetBrowserExtractionPublishOutputPath。
配置提取源和目标
你可以显式指定源路径和目标路径:
<PropertyGroup>
<DotNetBrowserExtractionEnabled>true</DotNetBrowserExtractionEnabled>
<DotNetBrowserExtractionDuringPublish>true</DotNetBrowserExtractionDuringPublish>
<DotNetBrowserExtractionSourcePath>$(PublishDir)</DotNetBrowserExtractionSourcePath>
<DotNetBrowserExtractionDestinationPath>chromium</DotNetBrowserExtractionDestinationPath>
</PropertyGroup>
在适当情况下,提取任务会追加平台特定子目录,例如 WindowsX64、LinuxArm64、MacX64 等。
提取属性
| 属性 | 默认值 | 说明 |
|---|---|---|
DotNetBrowserExtractionEnabled | false | 提取目标的总开关。 |
DotNetBrowserExtractionDuringBuild | false | 在 Build 目标之后执行提取。 |
DotNetBrowserExtractionDuringPublish | false | 在 Publish 目标之后执行提取。 |
DotNetBrowserExtractionSourcePath | Build: $(OutputPath)Publish: $(PublishDir) | 源文件或目录。可以指向包含 Chromium 程序集的目录。 |
DotNetBrowserExtractionDestinationPath | Build: $(TargetDir)unpacked/Publish: $(PublishDir)unpacked/ | 解包后 Chromium 二进制文件的目标目录。相对路径会相对于构建或发布输出目录解析。 |
运行时标识符和平台解析
当提取源是目录时,包会递归搜索 DotNetBrowser.Chromium.*.dll 程序集。如果找到多个候选项,任务会使用 RuntimeIdentifier 选择最匹配的一个。
支持的运行时标识符族包括:
win-x64、win-x86、win-arm64linux-x64、linux-arm64osx-x64、osx-arm64
如果未指定 RuntimeIdentifier,任务会使用当前主机操作系统和进程体系结构。
在应用启动时使用已提取的二进制文件
如果部署流程将 Chromium 二进制文件提取到了已知目录,请通过 EngineOptions.ChromiumDirectory 让 DotNetBrowser 使用该目录。
该值应指向提取根目录。DotNetBrowser 会自动追加当前平台子目录。
string chromiumDirectory = Path.Combine(AppContext.BaseDirectory, "unpacked");
IEngine engine = EngineFactory.Create(new EngineOptions.Builder
{
ChromiumDirectory = chromiumDirectory
}.Build());
Dim chromiumDirectory As String =
Path.Combine(AppContext.BaseDirectory, "unpacked")
Dim engine As IEngine = EngineFactory.Create(
New EngineOptions.Builder() With {
.ChromiumDirectory = chromiumDirectory
}.Build()
)
对于提取输出到 publish/unpacked/WindowsX64 的发布结果,请将 ChromiumDirectory 设置为 publish/unpacked。