目前,我使用Nuget打包发布版本并发布到nuget.org官方平台上,但我会使用Nuget打包调试版本并推送到symbolsource.org等符号源服务器。
编辑:(Jon Skeet,带有Noda Time开发的一些偏见)
现在,NuGet支持同时将包推送到NuGet gallery和symbolsource.org(或类似的服务器),如文档所述。不幸的是,这里存在两个矛盾的要求:
- 当仅使用库而不需要进行调试时,您确实希望使用发布版本。毕竟,发布版本就是为此而存在的。
- 当为诊断目的调试到库时,您确实希望使用具有所有适当优化禁用的调试版本。毕竟,调试版本就是为此而存在的。
这本来没问题,但是(就我所知)NuGet不允许以有用的方式发布既有发布版本又有调试版本的同一个包。
因此,选择如下:
- 向所有人分发调试版本(如文档中的示例)并承受任何大小和性能损失。
- 向所有人分发发布版本并承受略微受损的调试体验。
- 采用非常复杂的分发策略,可能会提供单独的发布版本和调试版本包。
前两种选择的本质在于调试版本和发布版本之间的差异......尽管值得注意的是,想要步入库的代码以检查某些行为与想要调试库的代码,因为您认为已经发现了一个错误,这两种情况之间也存在很大的区别。在第二种情况下,最好将库的代码作为“Visual Studio解决方案”获取,并以那种方式进行调试,因此我不会过多地考虑那种情况。
我的诱惑是仅使用发布版本,因为相对较少的人需要调试,并且那些需要调试的人也不会受到发布版本中优化的影响(JIT编译器主要负责优化)。
那么,我们是否考虑过其他选项?是否有其他考虑因素会倾斜平衡?将NuGet包推送到SymbolSource是否足够新,以至于“最佳实践”尚未建立?
nuget pack ... -Symbol
并推送生成的程序包 ... - Jon Skeet