问题描述
我目前正在尝试启用 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 将建立与符号服务器的连接并尝试定位符号。
由于您只将符号打包在 nuget 文件中,而不会将符号发布到符号服务器。因此,VS 中不会自动加载符号。
因此您需要在 Visual Studio 的“模块”窗口中手动添加它们以使其工作。
如果希望VS自动加载符号,在azure管道中,可以尝试使用两个代理作业,在第二个代理作业中使用windows代理运行Index Sources & Publish Symbols
任务将符号发布到Azure Artifact中的符号服务器.