gza*_*zak 84 debugging release visual-studio nuget
目前,我将发布版本与Nuget一起打包到nuget.org的官方版本,但是我使用Nuget将调试版本打包为符号源推送到symbolsource.org.
编辑:( Jon Skeet,与Noda Time开发有一些偏见)
NuGet现在支持推送到NuGet gallery 和 symbolsource.org(或类似的服务器),如文档所述.不幸的是,这里有两个相互矛盾的要求:
这没关系,但是NuGet没有(据我所知)允许在同一个包中以有用的方式发布发布和调试版本.
所以,选择是:
前两个真正归结为调试和发布版本之间差异的影响......虽然值得注意的是,想要进入库代码之间也存在很大差异,因为你想要检查一些行为,并且想要调试库的代码,因为你相信你发现了一个bug.在第二种情况下,最好将库的代码作为Visual Studio解决方案并以这种方式进行调试,因此我不会过多关注这种情况.
我的诱惑是继续发布版本,期望相对较少的人需要调试,并且那些不会受发布版本中的优化影响很大的人.(无论如何,JIT编译器完成了大部分优化.)
那么,我们还没有考虑过其他选择吗?是否有其他考虑因素可以达到平衡?将NuGet软件包推向SymbolSource是否足够新,"最佳实践"真的还没有建立?
小智 28
对于SymbolSource,我认为最佳做法是:
虽然我们正在使用它,但是一个常见的误解是.NET中的发布和调试版本确实有很大不同,但我假设差异在这里是因为各种代码可能包含或可能不包含在任何一个版本中,例如Debug .Asserts.
也就是说,将这两种配置推送到SymbolSource真的是值得的,因为你永远不知道什么时候需要调试生产代码.远程生产使其更难.当发生这种情况时,您将需要从工具中获得的帮助.我显然不希望任何人.
关于版本控制还有一个问题需要考虑:让2个不同的软件包(内置在调试版和发布版中)共享1个版本号是否正确?SymbolSource会接受这一点,因为它在单独的构建模式分支中提取包并存储二进制文件,因此只允许NuGet相应地标记包.目前无法确定包是调试还是释放模式.
OP 发表帖子已经过去 8 年了(之前的答案仍然在下面投票最高),所以我将用现在使用的内容来尝试一下。
\n有两种“步入”NuGet 包的方法:
\n1. PDB的分布
\n.symbols.nupkg
符号包被视为旧版,并已被发布到Symbol Server 的.snupkg
包所取代。它\xe2\x80\x99s 受到大多数供应商的支持,其中Azure DevOps是最大的局外人,其功能请求仍在“审核中”(感谢@alv 提供的链接)。
以下是官方说明。只需将这两行添加到 csproj 文件中:
\n<PropertyGroup>\n <IncludeSymbols>true</IncludeSymbols>\n <SymbolPackageFormat>snupkg</SymbolPackageFormat>\n</PropertyGroup>\n
Run Code Online (Sandbox Code Playgroud)\n在使用者方面,请确保您的 IDE 已针对 NuGet.org(或 Azure 等)符号服务器进行配置,以允许在调试时单步执行包代码。
\n2. 源码链接。链接实际代码
\n在某些情况下,由于 MSIL/JIT 优化,PDB 可能会隐藏源代码的一些细节。因此,有一种方法可以在调试时 \xe2\x80\x9d进入NuGet 的实际源代码 \xe2\x80\x9d 。它\xe2\x80\x99s 被称为来自.NET Foundation \xe2\x80\x93 \xe2\x80\x9d 的源链接,这是一个与语言和源代码控制无关的系统,用于为二进制文件\xe2\x80\x9c提供源调试体验。
\nVisual Studio 15.3+ 和所有主要供应商都支持它\xe2\x80\x99s(还支持私有存储库)。
\n\xe2\x80\x99s 的设置很简单(官方文档) \xe2\x80\x93 只需向项目文件添加开发依赖项(取决于您的存储库的类型)以及一些标志:
\n<PropertyGroup>\n <PublishRepositoryUrl>true</PublishRepositoryUrl>\n <EmbedUntrackedSources>true</EmbedUntrackedSources>\n</PropertyGroup>\n<ItemGroup>\n <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />\n</ItemGroup>\n
Run Code Online (Sandbox Code Playgroud)\n在“更好的 NuGet 包的 5 个步骤”中查看有关此主题的更多信息。
\n 归档时间: |
|
查看次数: |
17773 次 |
最近记录: |