调试和发布nuget包本地存储库

Pau*_*ugt 10 nuget visual-studio-2015 tfs-2015

我们正在为我们的视觉工作室项目试验nuget.但是,我们只(或至少主要)将nuget用于我们自己的外部引用,并将它们存储在本地存储库(网络共享)中.我想知道的是如何处理整个调试/发布情况.

具体(简化)情况:

我们有一个主项目,它引用了我们自己开发的两个共享组件.这些共享组件也用于我们公司的其他产品

当我们在构建服务器上构建主项目(tfs 2015构建任务)时,我们构建项目的调试和发布版本.但是,我们只能为每个外部引用指定一个nuget包.

我们希望在调试版本期间使用共享组件的调试版本以及在发布版本期间使用发行版本.然而,这些(据我所知)实际上是不同的包.

解决这个问题的方法是什么?例如,是否有一种方法可以在单个nuget包中包含发行版和调试版?是否可以针对不同的构建配置设置使用不同的nuget配置?

我找到了Nuget的最佳实践:调试还是发布?但是这个主题并没有真正解决我的问题.该线程更多地讨论了是否将调试版或发布版发布到远程服务器.我们希望发布两者并同时使用它们,但仅限于本地服务器.我们无意与世界其他地方分享我们的图书馆.

Mat*_*ard 3

NuGet 包通常只包含特定目标框架的一组程序集。它并不是真正设计用于发布调试和发布版本,因为您要发布 NuGet 包以供其他用户使用。通常,您不会向最终用户发布应用程序的调试版本和单独的发布版本。

您可以通过使用NuGet 包中具有自己的引用和配置信息的自定义 MSBuild .targets 文件来解决此问题。您可以使用此 .targets 文件作为项目的扩展。它将被导入,以便您可以根据项目中定义的配置根据需要定义参考。这并不理想,但应该可行。

  • 我真的不明白为什么没有更多的人遇到同样的问题。我概述了一种我认为对很多公司来说都很常见的情况。其他公司如何设置构建服务器来使用外部库进行构建?使用 nuget 的优点是它在 tfs2015 构建任务构建中开箱即用,并且确保引用的版本在手动更新之前保持不变。如果我们放弃 nuget,我们就会失去这个优势。 (2认同)
  • 是的,由于我们需要调试/发布配置,因此我们需要实现自定义构建任务。显然 nuget 在这里还不够,所以我们将开始处理自定义构建任务,以按照我们希望的方式实现它。我仍然认为没有其他默认方法来实现这一点很奇怪 (2认同)