使用 Azure Pipelines 发布符号

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

使用 Azure Pipelines,可以通过“为源编制索引并发布符号”任务,将符号发布到 Azure Artifacts 符号服务器。 你可以使用调试程序在不知道产品名称、生成号或包名称的情况下连接和自动检索正确的符号文件。 使用 Azure Pipelines,还可以将符号发布到文件共享和可移植 PDB。

注意

发布管道不支持为源编制索引并发布符号任务。

将符号发布到 Azure Artifacts 符号服务器

  1. 登录到 Azure DevOps 组织,然后导航到你的项目。

  2. 依次选择“管道”、你的管道、“编辑”以修改你的管道。

  3. 在管道定义中,选择“+”以添加新任务。

  4. 搜索“为源编制索引并发布符号”任务。 选择“添加”将其添加到管道。

  5. 按如下所示填写必填字段:

    • 任务版本:2.\*。

    • 显示名称:任务显示名称。

    • 符号文件夹路径:包含符号文件的文件夹的路径。

    • 搜索模式:此模式用于在你已在“符号文件夹的路径”下指定的文件夹中查找 .pdb 文件。 单文件夹通配符 (*) 和递归通配符 (**) 均受支持。 示例:*\bin**.pdb:将搜索名为 bin 的所有子目录中的所有 .pdb 文件。

    • 为源编制索引:指示是否将源服务器信息注入 PDB 文件。

    • 发布符号:指示是否发布符号文件。

      • 符号服务器类型:选择“此组织/集合中的符号服务器(需要Azure Artifacts)”,将符号发布到 Azure Artifacts 符号服务器。
    • 详细日志记录:在日志中包含更多信息。

屏幕截图显示如何配置“为源编制索引并发布符号”任务以将符号发布到 Azure Artifacts 符号服务器。

将符号发布到文件共享

除了 Azure Artifacts 符号服务器之外,还可以使用“为源编制索引并发布符号”任务,将符号发布到文件共享。

  1. 登录到 Azure DevOps 组织,然后导航到你的项目。

  2. 依次选择“管道”、你的管道、“编辑”以修改你的管道。

  3. 在管道定义中,选择“+”以添加新任务。

  4. 搜索“为源编制索引并发布符号”任务。 选择“添加”将其添加到管道。

  5. 按如下所示填写必填字段:

    • 任务版本:2.\*。

    • 显示名称:任务显示名称。

    • 符号文件夹路径:包含符号文件的文件夹的路径。

    • 搜索模式:此模式用于在你已在“符号文件夹的路径”下指定的文件夹中查找 .pdb 文件。

    • 为源编制索引:指示是否将源服务器信息注入 PDB 文件。

    • 发布符号:指示是否发布符号文件。

      • 符号服务器类型:选择“文件共享”,将符号发布到文件共享。
      • 发布符号的路径:将托管符号的文件共享。
    • 详细日志记录:选中此项可将更多信息包含在日志中。

    屏幕截图显示如何配置“为源编制索引并发布符号”任务以将符号发布到文件共享。

将可移植 PDB 发布到 Azure Artifacts 符号服务器

可移植 PDB 是可以在所有平台上创建并使用的符号文件,不同于仅在 Windows 上使用的传统 PDB。 对于可移植 PDB,生成会编制索引,但你仍需要使用“为源编制索引并发布符号”任务来发布符号。

Source Link 是一组工具,开发人员可以使用它通过从 .NET 程序集映射回源代码来调试源代码。 请查看 dotnet/sourcelink GitHub 存储库,了解包含的不同包。

  • 对于 GitHub 上托管的项目,请将 Microsoft.SourceLink.GitHub 包引用添加到项目文件。

    <ItemGroup>
      <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
    </ItemGroup>
    
  • 对于 Azure Repos(以前称为 Visual Studio Team Services)上托管的项目,请将 Microsoft.SourceLink.AzureRepos.Git 包引用添加到项目文件。

    <ItemGroup>
      <PackageReference Include="Microsoft.SourceLink.AzureRepos.Git" Version="1.1.1" PrivateAssets="All"/>
    </ItemGroup>
    
  • 对于 Azure DevOps Server(以前称为 Team Foundation Server)上托管的项目,请将 Microsoft.SourceLink.AzureDevOpsServer.Git 包引用添加到项目文件。

    <ItemGroup>
      <PackageReference Include="Microsoft.SourceLink.AzureDevOpsServer.Git" Version="1.1.1" PrivateAssets="All"/>
    </ItemGroup>
    

设置发布任务

“为源编制索引并发布符号”任务用于为源代码编制索引并将符号发布到 Azure Artifacts 符号服务器和文件共享。 由于我们使用的是 Source Link,因此必须在发布任务中禁用编制索引功能。

  1. 登录到 Azure DevOps 组织,然后导航到你的项目。

  2. 依次选择“管道”、你的管道、“编辑”以修改你的管道。

  3. 在管道定义中,选择“+”以添加新任务。

  4. 搜索“为源编制索引并发布符号”任务。 选择“添加”将其添加到管道。

  5. 填写必填字段,然后为“符号服务器类型”选择“符号服务器”。 请务必取消选中“为源编制索引”以禁用编制索引功能。

    屏幕截图显示如何配置发布任务以将可移植 PDB 发布到 Azure Artifacts 符号服务器。

重要

若要删除通过“为源编制索引并发布符号”任务发布的符号,必须先删除生成了这些符号的生成。 可以使用保留策略或通过手动删除运行来实现此目的。

设置 Visual Studio

注意

Visual Studio for Mac 不支持使用符号服务器进行调试。

在开始使用 Azure Artifacts 符号服务器中的符号之前,请确保 Visual Studio 已正确设置:

  1. 在 Visual Studio 中,依次选择“工具”和“选项”。

  2. 从“调试”菜单中选择“符号”。

  3. 选择 + 符号以添加新的符号服务器位置。

    屏幕截图显示如何添加新的符号服务器位置。

  4. 此时会显示一个新对话框。请从下拉菜单中选择帐户,然后选择要连接到的组织。 完成后,选择“连接”。

  5. 从同一“调试”部分选择“常规”。 向下滚动并选中“启用 Source Link 支持”,启用对可移植 PDB 的支持。

    屏幕截图显示如何在 Visual Studio 中启用 Source Link 支持。

注意

通过选中“启用源服务器支持”选项,可以在源代码在本地不可用或符号文件与源代码不匹配的情况下使用源服务器。 如果要启用针对第三方源代码的调试,请取消选中“启用‘仅我的代码’”复选框。

常见问题

问:符号的保留期有多长?

答:符号文件的保留期与产生它的生成相同。 手动或使用保留策略删除生成时,该生成产生的符号也会一同被删除。

问:是否可以对从 .NET Core 程序集生成的可移植 PDB 使用源索引编制?

答:目前还做不到。 可移植 PDB 当前不支持源索引编制。 建议方法是将生成配置为执行索引编制。