【问题标题】:NuGet : How to keep package versions consistent across several solutions?NuGet:如何在多个解决方案中保持包版本一致?
【发布时间】:2012-09-19 10:00:41
【问题描述】:

我们正在构建一组多项服务,每项服务都有自己的解决方案和相关项目。其中许多服务依赖于相同的 NuGet 包。
所有解决方案都启用了“包还原”。

一些解决方案引用其他解决方案拥有的程序集,这就是为什么我们需要所有解决方案引用完全相同版本的不同 NuGet 包的一个明显原因。

所有服务都需要协同工作才能达到最终结果。它们作为单个产品的一部分进行打包和安装,这是我们希望所有东西都运行在相同版本的 NuGet 包的另一个原因

我们无法在解决方案之间保持包版本一致。

目前我们正在手动检查和更新包版本,我们也偶尔会遇到编译错误,因为一个解决方案中的项目最终会引用同一包的不同版本。

有没有推荐的方法(希望是自动过程)?
如果没有包还原,我们会更好吗?
有人对此主题有任何一般性建议吗?

谢谢

更新:我在 NugGet 项目 http://nuget.codeplex.com/workitem/2623 上为此创建了一个问题

【问题讨论】:

    标签: visual-studio-2012 nuget


    【解决方案1】:

    解决这个问题:

    1. 创建您自己的私有 NuGet 服务器(请参阅 12)托管您使用的正确版本的包。
    2. 将每个构建系统配置为使用该服务器并自动更新到最新版本。

    虽然这需要服务器,但它不仅可以确保每个人都拥有正确的版本,而且还可以加快构建服务器的下载速度。

    【讨论】:

    • 这行得通吗?主包(例如“MassTransit.RabbitMQ”)是否不会去 Online repo 获取它的依赖包(例如 MassTransit、Magnum 等)?
    • @BinaryWorrier 您可以配置 IDE 将联系的服务器以获取包列表以删除全局包。有关屏幕截图和相关信息,请参阅答案中的链接。
    • 好的,我知道这应该如何工作了。你禁用了官方的 NuGet 存储库,只启用了你自己的。我可以看到去获取新包很尴尬,你重新启用官方 repo,下载包,试用它们,将它们复制到你自己的服务器,禁用官方 repo,撤消你的更改。并开始正确使用新包。我去看看,谢谢。
    • @BinaryWorrier 我同意这很尴尬,并且很想知道是否还有更简单的方法。
    【解决方案2】:

    您可以使用nuget update command 配置您的 TFS 构建以将解决方案中的所有 NuGet 包更新到其最新版本。

    最新版本可能来自 nuget.org、本地 NuGet 服务器甚至网络共享。使用source 参数定义您想要更新的来源。

    您可以通过 MsBuild 项目文件或通过 TFS 模板执行构建配置。

    【讨论】:

      猜你喜欢
      • 2012-04-14
      • 2014-11-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多