我想使用VSTS构建程序将基于.net标准的代码打包并发布为nuget程序包。我创建了一个私有的nuget提要(在VSTS Artifacts中),我希望将nuget包和符号包一起发布到该提要。
我尝试使用dotnet CLI任务进行构建和发布,但它仅将.nupkg而不是* .snupkg发布到nuget提要。
我在Google上搜索了很多,但只发现了与发布到nuget.org而不是私人供稿有关的文章。
答案 0 :(得分:5)
将* .snupkg符号包发布到VSTS中的私有提要
您可以将.snupkg符号包发布到 NuGet.org或任何选择加入此体验的NuGet服务器。但是azure devops私人供稿没有这种经验。
您可以从此Wiki NuGet Package Debugging & Symbols Improvements获取详细信息:
- 发布程序包时,符号程序包和.nupkg都可以轻松发布到NuGet.org或选择使用此体验的任何NuGet服务器。
原因:
我们知道,在Visual Studio中使用.snupkg
时,我们在符号文件(.pdb)位置下添加了一个新的符号服务器位置:
但是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升级到支持此功能的版本(如下所示)
2)设置自定义dotnet pack命令(如下所示)
3)使用dotnet push命令(如下所示)将其推送到Azure
这导致将snupkg推送到Azure DevOps Artifacts,因此:
答案 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 #4142和Include pdb files into my nuget (nupkg) files。