目前,我使用 Nuget 将发布版本打包到 nuget.org 的官方版本,但我使用 Nuget 打包调试版本,以便将符号源推送到 symbolsource.org。
编辑:(Jon Skeet,来自 Noda Time 开发的一些偏见)
NuGet 现在支持推送到 NuGet 库和symbolsource.org(或类似服务器),如文档所述。不幸的是,这里有两个相互矛盾的要求:
- 当只使用库而不需要任何调试时,你真的想要一个发布版本。毕竟,这就是发布版本的用途。
- 出于诊断目的调试库时,您确实需要禁用所有适当优化的调试版本。毕竟,这就是调试版本的用途。
这很好,但 NuGet 不允许(据我所知)在同一个包中以有用的方式发布发布和调试版本。
所以,选择是:
- 将调试版本分发给每个人(如文档中的示例所示),并接受任何规模和性能影响。
- 将发布版本分发给每个人,并忍受稍微受损的调试体验。
- 寻求一个非常复杂的分发策略,可能会提供单独的发布和调试包。
前两个确实归结为调试和发布版本之间差异的影响......尽管值得注意的是,因为想要检查某些行为而想要进入库的代码和想要调试库的代码,因为您认为自己发现了错误。在第二种情况下,最好将库的代码作为 Visual Studio 解决方案获取并以这种方式进行调试,因此我不会过多注意这种情况。
我的诱惑是只保留发布版本,期望相对较少的人需要调试,而那些这样做的人不会受到发布版本中的优化的太大影响。(无论如何,JIT 编译器都会进行大部分优化。)
那么,还有其他我们没有考虑过的选择吗?是否还有其他因素可以打破平衡?将 NuGet 包推送到 SymbolSource 是否足够新,以至于“最佳实践”真的还没有建立?