带有 Linux 构建代理的 Azure Devops 中的 Nuget 符号

问题描述

我目前正在尝试启用 nuget 库以在 CI/CD 进程中进行本地调试。

现状

我在 Azure Devops 上有一个使用 Ubuntu 代理的构建配置。构建发布工件,发布管道将 nuget 包打包/推送到 Azure Artifacts。

首先,我尝试使用 snupkg 格式发布 pdb 文件,但 Azure Artifacts 不支持这些文件https://developercommunity.visualstudio.com/t/add-snupkg-support-to-azure-devops-artifacts/657354

我尝试按照本教程进行操作。 https://docs.microsoft.com/en-us/azure/devops/artifacts/symbols/setting-up-github-sourcelinking?view=azure-devops

一个障碍是发布符号的任务不能在 Linux 上运行,而只能在 Windows 上运行。 https://github.com/microsoft/azure-pipelines-tasks/issues/5919

因此,我在使用符号服务器时运气不佳。我通过在 .csproj 文件

添加以下内容找到了解决方法
        <EmbedUntrackedSources>true</EmbedUntrackedSources>
        <PublishRepositoryUrl>true</PublishRepositoryUrl>
        <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>

现在符号已打包在 nuget 文件中,但当我在 Visual Studio 中使用该包时仍未自动加载。 (我在 VS 中取消选中仅启用我的代码

当我在 Visual Studio 的模块窗口中手动添加它们时,它起作用了。

是否有任何方法可以在 Azure Devpos 中使用 Linux 代理构建 CI/CD 流程以使符号正常工作?或者VS可以在加载nuget包时自动加载符号吗?

我的项目是 .net 标准 2.1/.net 框架 5。 构建:Azure Devops(Ubuntu 代理) Nuget 存储库:Azure Artifacts 视觉工作室:VS 2019 16.8.4

非常感谢所有帮助我们。

谢谢

解决方法

现在符号已打包在 nuget 文件中但仍未加载 当我在 Visual Studio 中使用包时自动。 (一世 未选中在 VS 中仅启用我的代码)

对于此问题,这是预期行为。通常我们使用 Index Sources & Publish Symbols 任务将符号发布到 Azure Artifact 中的符号服务器(Azure Artifacts 提供了一个专用的符号服务器来发布你的符号)。然后在 Visual Studio 中,添加新的符号服务器(拥有管道并托管工件提要的组织)。配置完成后,Visual Studio 将建立与符号服务器的连接并尝试定位符号。

enter image description here

由于您只将符号打包在 nuget 文件中,而不会将符号发布到符号服务器。因此,VS 中不会自动加载符号。

因此您需要在 Visual Studio 的“模块”窗口中手动添加它们以使其工作。

如果希望VS自动加载符号,在azure管道中,可以尝试使用两个代理作业,在第二个代理作业中使用windows代理运行Index Sources & Publish Symbols任务将符号发布到Azure Artifact中的符号服务器.