使用 Azure Pipelines 发布符号

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

使用 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,构建执行索引编制,但仍需要使用 索引源和发布符号 任务来发布符号文件。

源链接是一组工具,开发人员可以通过从 .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 符号服务器和文件共享。 由于我们使用的是 源链接,因此我们必须在发布任务中 禁用索引

  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. 从同一调试部分选择“常规”。 向下滚动并选中 “启用源链接支持 ”以启用对可移植 PDB 的支持。

    显示如何在 Visual Studio 中启用源链接支持的屏幕截图。

注释

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

常见问题解答

问:保留符号的持续时间是多少?

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

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

答:目前无法实现此目的。 便携式 PDB 目前不支持源索引编制。 建议的方法是配置构建以执行索引。