目录

预提取 Chromium 二进制文件

本文介绍如何在 .NET 构建或发布流程中预提取 DotNetBrowser Chromium 二进制文件。

在使用 DotNetBrowser 的 .NET 应用程序中,请使用 DotNetBrowser.Chromium.Extraction NuGet 包。

如果你还需要应用白标品牌,例如可执行文件名称、图标或 macOS bundle 元数据,请参阅 品牌化 Chromium 二进制文件

DotNetBrowser 会与库一起部署 Chromium 二进制文件。在大多数应用程序中,DotNetBrowser 会自动提取并使用这些二进制文件。本文介绍的包适用于你希望对构建、发布和部署流程拥有更多控制的场景:

  • DotNetBrowser.Chromium.Extraction 会在 dotnet builddotnet 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>

在适当情况下,提取任务会追加平台特定子目录,例如 WindowsX64LinuxArm64MacX64 等。

提取属性 

属性默认值说明
DotNetBrowserExtractionEnabledfalse提取目标的总开关。
DotNetBrowserExtractionDuringBuildfalseBuild 目标之后执行提取。
DotNetBrowserExtractionDuringPublishfalsePublish 目标之后执行提取。
DotNetBrowserExtractionSourcePathBuild: $(OutputPath)
Publish: $(PublishDir)
源文件或目录。可以指向包含 Chromium 程序集的目录。
DotNetBrowserExtractionDestinationPathBuild: $(TargetDir)unpacked/
Publish: $(PublishDir)unpacked/
解包后 Chromium 二进制文件的目标目录。相对路径会相对于构建或发布输出目录解析。

运行时标识符和平台解析 

当提取源是目录时,包会递归搜索 DotNetBrowser.Chromium.*.dll 程序集。如果找到多个候选项,任务会使用 RuntimeIdentifier 选择最匹配的一个。

支持的运行时标识符族包括:

  • win-x64win-x86win-arm64
  • linux-x64linux-arm64
  • osx-x64osx-arm64

如果未指定 RuntimeIdentifier,任务会使用当前主机操作系统和进程体系结构。

在应用启动时使用已提取的二进制文件 

如果部署流程将 Chromium 二进制文件提取到了已知目录,请通过 EngineOptions.ChromiumDirectory 让 DotNetBrowser 使用该目录。

该值应指向提取根目录。DotNetBrowser 会自动追加当前平台子目录。

C#
VB
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