Azure DevOps带符号的NuGet Feed

11
为了调试,我需要将我的NuGet包(包括符号)推送到我们的自托管Azure Devops服务器。
因此,在我的构建管道中,我使用带有标志--include-symbols和--include-source的dotnet pack任务。输出结果是两个文件package.1.0.0.nupkg和package.1.0.0.symbols.nupkg。
当我尝试在发布管道中推送package.1.0.0.symbols.nupkg包时,我收到反馈:
409(冲突 - 源已经包含“package.1.0.0”(DevOps活动ID:766B8BC7-9AE6-4998-A246-47397236122F))。
我在stack上找到了Publish *.snupkg symbol package to private feed in VSTS。反馈是Azure DevOps Server不支持NuGet Symbols,并建议使用符号服务器。
简单重命名package.1.0.0.symbols.nupkg到package.1.0.0.nupkg并将其推送到源中,是否可以解决问题?Visual Studio可以打开这种类型包内的源代码调试器吗?
是否还有其他方法在Azure DevOps Server中提供NuGet Symbols进行调试?

我测试了将 package.1.0.0.symbols.nupkg 推送到我的 feed 中,它可以正常工作。它被显示为 package, Version 1.0.0。当我手动下载时,所有内容都在其中(源代码 cs, csproj 和符号 pdb)。但是当我使用 nuget install package 时,只有 package.dll 是从 Azure DevOps Artifacts 下载的内容的一部分。这是为什么呢? - Mar Tin
嗨,Mar Tin,我看到你发布了一篇关于这个问题的详细信息的新帖子,其他人正在尝试解决它们。当我有时间时,我也会关注这些问题。那么,你对当前问题有什么疑问吗? - Leo Liu
1
我有同样的问题。 - Gioce90
1个回答

6

您的帖子中有多个问题,让我们逐一解决。

  1. 将“package.1.0.0.symbols.nupkg”重命名为“package.1.0.0.nupkg”,并将此包推送到feed,这是一种可行的解决方法吗?

答案是否定的。错误消息409(冲突-Feed已包含“package.1.0.0”意味着您的feed中已经有一个版本号为1.0.0package.1.0.0.nupkgpackage.1.0.0.symbols.nupkg的包。因此,在该feed中不能推送具有相同版本的另一个包。在feed中,软件包版本是唯一的。为了保护软件包不会由于软件包的相同版本而互相覆盖,所以需要保证唯一性。

因此,要解决该错误,您需要更新软件包版本,例如1.0.1从feed中删除旧版本的软件包将无法解决此错误)。

  1. Visual Studio能够在这些类型的包的源代码中打开调试器吗?

简短的答案是可以。详细信息将在下一个问题中解释。

  1. 是否有另一种方法为Azure DevOps服务器提供NuGet Symbols以进行调试?

答案是肯定的,我们需要配置Visual Studio以启用调试远程包。您可以参考官方文档和详细博客:

使用Visual Studio进行符号调试

在AzureDevOps中使用VSTS符号服务器进行ASP.NET Core调试Nuget Packages

  1. 但是,当我使用nuget install package时,只有package.dll是从Azure DevOps Artifacts下载的内容的一部分。为什么会这样?

这是安装软件包的预期行为。因为大多数情况下,当我们安装和使用NuGet软件包时,我们并不需要调试包,所以安装包只会将我们需要的dll添加到项目中,并不会配置Symbols包。如果我们想要调试软件包,则必须像上面的链接那样配置Symbols包。

  1. 反馈是Azure DevOps服务器不支持NuGet Symbols,并建议使用符号服务器。

你在问题中提到的反馈是针对 *.snupkg 符号包而不是符号包。Azure DevOps Server应该支持发布NuGet Symbols包,而不是调试包,我们必须手动配置Visual Studio以使用Azure DevOps Server。

顺便说一下,由于你的帖子中有很多问题,并且它们更加通用,我的回答不是非常具体。如果您对任何具体问题有疑问,欢迎打开一个新的帖子并提出详细的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接