目前,我将发布版本与Nuget打包在一起,以将正式版本打包到nuget.org,但我将调试版本与Nuget打包在一起,以将符号源推送到symbolsource.org。
编辑:(乔恩·斯基特,从野田时间发展的一些偏见)
NuGet现在支持同时推送到NuGet gallery 和 symbolsource.org(或类似的服务器),如记录所示。不幸的是,这里有两个矛盾的要求:
- 当只使用一个库而无需调试时,您确实需要发行版。毕竟,这就是发行版的目的。
- 当出于诊断目的而调试到库中时,您确实想要禁用所有适当优化的调试版本。毕竟,这就是调试版本的目的。
很好,但是(据我所知)NuGet不允许以有用的方式在同一程序包中发布发行版本和调试版本。
因此,选择是:
- 将调试版本分发给每个人(如文档中的示例所示),并在不影响大小和性能的情况下生存。
- 向所有人分发发行版,并在调试体验稍有下降的情况下进行。
- 选择一个非常复杂的分发策略,可能会提供单独的发行和调试包。
前两个确实归结为调试版本与发行版本之间的差异的影响……尽管值得注意的是,由于要检查某些行为而想要进入库的代码之间还有很大的不同。调试库的代码,因为您认为发现了一个错误。在第二种情况下,最好将库的代码作为Visual Studio解决方案来获取并以这种方式进行调试,因此我不必过多注意这种情况。
我的诱惑是只保留与发行版本,与预期相对很少有人会需要调试,和谁做的人不会受到影响太大由发布版本的优化。(无论如何,JIT编译器都会进行大多数优化。)
那么,还有其他我们没有考虑过的选择吗?还有其他考虑因素可以平衡吗?将NuGet软件包推送到SymbolSource是否足够新,以至于实际上还没有建立“最佳实践”?
nuget pack ... -Symbol
和推送生成的软件包...