将* .snupkg符号包发布到VSTS中的私有提要

时间:2019-01-16 06:39:04

标签: azure-devops nuget azure-pipelines azure-artifacts

我想使用VSTS构建程序将基于.net标准的代码打包并发布为nuget程序包。我创建了一个私有的nuget提要(在VSTS Artifacts中),我希望将nuget包和符号包一起发布到该提要。

我尝试使用dotnet CLI任务进行构建和发布,但它仅将.nupkg而不是* .snupkg发布到nuget提要。

我在Google上搜索了很多,但只发现了与发布到nuget.org而不是私人供稿有关的文章。

4 个答案:

答案 0 :(得分:5)

  

将* .snupkg符号包发布到VSTS中的私有提要

您可以将.snupkg符号包发布到 NuGet.org或任何选择加入此体验的NuGet服务器。但是azure devops私人供稿没有这种经验。

您可以从此Wiki NuGet Package Debugging & Symbols Improvements获取详细信息:

  
      
  • 发布程序包时,符号程序包和.nupkg都可以轻松发布到NuGet.org或选择使用此体验的任何NuGet服务器。
  •   

原因

我们知道,在Visual Studio中使用.snupkg时,我们在符号文件(.pdb)位置下添加了一个新的符号服务器位置:

enter image description here

但是Visual Studio只能解析符号文件( .pdb )而不是.snupkg包,因此,我们需要一个NuGet服务器来帮助我们读取.pdb .snupkg包中的文件。 Azure devops feed更倾向于成为程序包的共享存储库。

因此,我们必须将* .snupkg符号包发布到 NuGet.org或任何选择加入此体验的NuGet服务器

如果您不想在nuget.org上共享软件包,则可以host your own NuGet server或使用lightweight solution来解决此问题(您可以使用私有供稿调试nuget软件包)。

希望这会有所帮助。

答案 1 :(得分:2)

您可以将snupkg文件发布到Azure DevOps,但是此时,您不能将它们与VS一起使用来进行调试。这是我的操作方式:

1)设置“使用.Net Core”任务,以将.net SDK升级到支持此功能的版本(如下所示)

SDK install

2)设置自定义dotnet pack命令(如下所示)

pack command

3)使用dotnet push命令(如下所示)将其推送到Azure

dotnet push setup

这导致将snupkg推送到Azure DevOps Artifacts,因此:

result

答案 2 :(得分:1)

Azure Artifacts当前不支持.snupkg,但是它确实具有符号服务器,如果要使用Azure Pipelines进行构建,则可以将其发布到该服务器。 This doc逐步建立了一个发布符号的管道。

答案 3 :(得分:0)

您可能只想将符号PDB嵌入到主NuGet包本身中。 IMO是当今最好的方法-简单得多,根本不需要符号服务器,并且可以与所有存储库类型很好地配合使用,私有VSTS / Azure DevOps可以提供公共存储库。唯一的缺点是,即使客户端不使用调试信息,客户端也必须下载适度较大的NuGet软件包,但这似乎很小。

在NuGet软件包中添加PDB通常只需将其添加到项目文件中即可。

<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>

请参见NuGet #4142Include pdb files into my nuget (nupkg) files