【发布时间】:2012-11-09 09:50:36
【问题描述】:
目前,我使用 Nuget 将发布版本打包到 nuget.org,但我使用 Nuget 打包调试版本,以便将符号源推送到 symbolsource.org。
编辑:(Jon Skeet,对 Noda Time 开发有一些偏见)
NuGet 现在支持推送到 NuGet 库和 symbolsource.org(或类似服务器)as documented。不幸的是,这里有两个相互矛盾的要求:
- 当只是使用一个库而不需要调试时,你真的想要一个发布版本。毕竟,这就是发布版本的用途。
- 当出于诊断目的调试库时,您确实需要禁用所有适当优化的调试版本。毕竟,这就是调试版本的用途。
这很好,但 NuGet 不允许(据我所知)以有用的方式在同一个包中发布发布和调试版本。
所以,选择是:
- 将调试版本分发给每个人(如文档中的示例所示),并接受任何规模和性能影响。
- 将发布版本分发给所有人,调试体验略有下降。
- 采用非常复杂的分发策略,可能会提供单独的发布和调试包。
前两个确实归结为调试和发布版本之间差异的影响......尽管值得注意的是,因为想要检查某些行为而想要进入库的代码之间也存在很大差异,并且想要调试库的代码,因为您认为自己发现了错误。在第二种情况下,最好将库的代码作为 Visual Studio 解决方案并以这种方式进行调试,因此我不会过多注意这种情况。
我的诱惑是只保留发布版本,期望相对很少有人需要调试,而那些这样做的人不会受到影响太多 通过发布版本中的优化。 (无论如何,JIT 编译器都会进行大部分优化。)
那么,还有其他我们没有考虑过的选择吗?是否还有其他因素可以打破平衡?将 NuGet 包推送到 SymbolSource 是否足够新,以至于“最佳实践”真的还没有建立?
【问题讨论】:
-
我正要问同样的问题 - 虽然目前我也正在将发布配置推送到符号源,因为我只是使用
nuget pack ... -Symbol并推送生成的包......跨度> -
我觉得我应该将此 Q/A 会议提交给 NuGet 背后的人,看看他们是否可以参与其中。
-
烘焙登录到你的包,然后只发布发布版本。您可以允许记录器注入,这将使消费者可以根据自己的喜好设置记录。
标签: visual-studio debugging release nuget