带有符号的 Azure DevOps NuGet 源

Mar*_*Tin 5 azure-devops

为了调试,我需要将包括 Symboles 在内的 NuGet 包推送到我们自托管的 Azure Devops Server

因此,我用dotnet pack任务与标志--include-symbols,并--include-source在我的构建流水线。作为输出,我得到两个文件package.1.0.0.nupkgpackage.1.0.0.symbols.nupkg.

当我尝试package.1.0.0.symbols.nupkg在我的发布管道中推送包时,我得到了反馈:

409(冲突 - 提要已包含“package.1.0.0”。(DevOps 活动 ID:766B8BC7-9AE6-4998-A246-47397236122F))。

我在堆栈上的VSTS 中找到了Publish *.snupkg 符号包到私有提要。反馈是Azure DevOps 服务器不支持NuGet 符号,他们建议使用符号服务器。

是否有可能的解决方法是简单地重命名package.1.0.0.symbols.nupkgtopackage.1.0.0.nupkg并将此包推送到提要?Visual Studio是否能够在此类包的源中打开调试器?

还有另一种方法可以提供NuGet 符号以在Azure DevOps 服务器上进行调试吗?

Leo*_*SFT 6

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

  1. 是否有一个可能的解决方法,只需将 package.1.0.0.symbols.nupkg 重命名为 package.1.0.0.nupkg 并将此包推送到源?

答案是不。该错误409 (Conflict - The feed already contains "package.1.0.0"意味着您的 Feed 中已经有一个包package.1.0.0.nupkgpackage.1.0.0.symbols.nupkgwith 。version 1.0.0因此,您无法在该源中推送具有相同版本的另一个包。feed 中的包版本是唯一的。为了保护包不会因为包版本相同而相互踩踏。

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

  1. Visual Studio 是否能够在此类包的源代码中打开调试器?

简短的回答是肯定的。详细内容将在下一个问题中解释。

  1. 是否有另一种方法可以提供 NuGet 符号以在 Azure DevOps 服务器上进行调试?

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

在 Visual Studio 中使用符号进行调试

ASP.NET Core 使用 AzureDevOps 调试 Nuget 包 | VSTS 符号服务器

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

这是安装包的预期行为。因为大多数时候我们安装使用nuget包的时候并不需要debug包,所以安装包只会将我们需要的dll添加到项目中而不会配置Symbols包。如果我们想调试包,我们必须像上面的链接一样配置符号包。

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

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

顺便说一句,由于您的帖子中有很多问题而且比较笼统,所以我的回答不是很具体。如果您对任何具体问题有任何疑问,欢迎您开新帖子提出详细问题。