将 *.snupkg 符号包发布到 VSTS 中的私人提要
Publish *.snupkg symbol package to private feed in VSTS
我想使用 VSTS 构建将基于 .net 标准的代码打包并发布为 nuget 包。我创建了一个私人 nuget 提要(在 VSTS Artifacts 中),我想将 nuget 包和符号包一起发布到它。
我尝试使用 dotnet CLI 任务来构建和发布,但它只将 .nupkg 而不是 *.snupkg 发布到 nuget 提要。
我用谷歌搜索了很多,但我只找到了与发布到 nuget.org 而不是私人供稿相关的文章。
Publish *.snupkg symbol package to private feed in VSTS
您可以将 .snupkg 符号包发布到 NuGet.org,或发布到任何选择加入此体验的 NuGet 服务器。但是azure devops private feed没有这个经验。
您可以从这个 wiki 获取详细信息 NuGet Package Debugging & Symbols Improvements:
- When publishing packages, both the symbols package and the .nupkg will be easily published to NuGet.org, or to any NuGet server that opts into this experience.
原因:
我们知道,当我们在 Visual Studio 中使用 .snupkg
时,我们在符号文件 (.pdb) 位置下添加了一个新的符号服务器位置:
但是Visual Studio只能直接解析符号文件(.pdb)而不是.snupkg
包,所以需要NuGet服务器来帮忙我们从 .snupkg
包中读取 .pdb
文件。 Azure devops feed 更倾向于成为包的共享存储库。
因此,我们必须将 *.snupkg 符号包发布到 NuGet.org,或发布到任何选择加入此体验的 NuGet 服务器。
如果您不想在 nuget.org 上共享您的包,您可以 host your own NuGet server or you can use a 解决此问题(您可以使用私人提要调试 nuget 包)。
希望这对您有所帮助。
Azure Artifacts 目前不支持 .snupkg
s,但它有一个符号服务器,如果您使用 Azure Pipelines 进行构建,您可以将其发布到该服务器。 This doc 介绍如何设置发布符号的管道。
您可以将 snupkg 文件发布到 Azure DevOps,但此时,您不能使用 VS 使用它们进行调试。这是我的做法:
1) 设置一个 "Use .Net Core" 任务来将 .net sdk 升级到支持它的版本(如下所示)
2) 设置自定义 dotnet pack 命令(如下所示)
3) 使用 dotnet push 命令将其推送到 Azure(如下所示)
这导致 snupkg 被推送到 Azure DevOps Artifacts,因此:
您可能只想将符号 PDB 嵌入主 NuGet 包本身。 IMO 这是今天最好的方法 - 它更简单,完全不需要符号服务器并且适用于所有存储库类型,私有 VSTS/Azure DevOps 提要 public 回购。唯一的缺点是客户端即使不使用调试信息也必须下载稍大的 NuGet 包,但这似乎很小。
在 NuGet 包中添加 PDB 通常只需将其添加到您的项目文件中即可:
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
参见NuGet #4142 and 。
我想使用 VSTS 构建将基于 .net 标准的代码打包并发布为 nuget 包。我创建了一个私人 nuget 提要(在 VSTS Artifacts 中),我想将 nuget 包和符号包一起发布到它。
我尝试使用 dotnet CLI 任务来构建和发布,但它只将 .nupkg 而不是 *.snupkg 发布到 nuget 提要。
我用谷歌搜索了很多,但我只找到了与发布到 nuget.org 而不是私人供稿相关的文章。
Publish *.snupkg symbol package to private feed in VSTS
您可以将 .snupkg 符号包发布到 NuGet.org,或发布到任何选择加入此体验的 NuGet 服务器。但是azure devops private feed没有这个经验。
您可以从这个 wiki 获取详细信息 NuGet Package Debugging & Symbols Improvements:
- When publishing packages, both the symbols package and the .nupkg will be easily published to NuGet.org, or to any NuGet server that opts into this experience.
原因:
我们知道,当我们在 Visual Studio 中使用 .snupkg
时,我们在符号文件 (.pdb) 位置下添加了一个新的符号服务器位置:
但是Visual Studio只能直接解析符号文件(.pdb)而不是.snupkg
包,所以需要NuGet服务器来帮忙我们从 .snupkg
包中读取 .pdb
文件。 Azure devops feed 更倾向于成为包的共享存储库。
因此,我们必须将 *.snupkg 符号包发布到 NuGet.org,或发布到任何选择加入此体验的 NuGet 服务器。
如果您不想在 nuget.org 上共享您的包,您可以 host your own NuGet server or you can use a
希望这对您有所帮助。
Azure Artifacts 目前不支持 .snupkg
s,但它有一个符号服务器,如果您使用 Azure Pipelines 进行构建,您可以将其发布到该服务器。 This doc 介绍如何设置发布符号的管道。
您可以将 snupkg 文件发布到 Azure DevOps,但此时,您不能使用 VS 使用它们进行调试。这是我的做法:
1) 设置一个 "Use .Net Core" 任务来将 .net sdk 升级到支持它的版本(如下所示)
2) 设置自定义 dotnet pack 命令(如下所示)
3) 使用 dotnet push 命令将其推送到 Azure(如下所示)
这导致 snupkg 被推送到 Azure DevOps Artifacts,因此:
您可能只想将符号 PDB 嵌入主 NuGet 包本身。 IMO 这是今天最好的方法 - 它更简单,完全不需要符号服务器并且适用于所有存储库类型,私有 VSTS/Azure DevOps 提要 public 回购。唯一的缺点是客户端即使不使用调试信息也必须下载稍大的 NuGet 包,但这似乎很小。
在 NuGet 包中添加 PDB 通常只需将其添加到您的项目文件中即可:
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
参见NuGet #4142 and