NuGet跨项目依赖

时间:2017-04-27 17:32:03

标签: nuget shared-libraries workflow production-environment

我的问题是关于共享代码的NuGet包的生产工作流程。

假设我们有项目Pr1,它取决于NuGet包N1,它取决于包N2。 Pr1作为解决方案中其他项目的参考项目添加。 这些项目还依赖于包N1和N2。

现在想象一下,我已经对N2包进行了更改。 之后,我需要为N1更新N2的包版本,为Pr1以及同时使用N2和Pr1的每个项目更新,因为如果我不这样做,我可能会遇到运行时错误。它们的原因实际上是将程序集复制到依赖项目的bin目录中,并且该版本与它构建的版本不同。

这个工作流程比SVN外部形式的共享代码更加痛苦,但是我们正在迁移到Git,共享代码不是它可以有效工作的东西(子树和子模块与外部组件不同!)

此外,我们不仅有一个项目解决方案,而且很多,并且依赖链比这个玩具示例要长得多,因此更改版本变得非常痛苦,并提供浪费时间的文件。

1 个答案:

答案 0 :(得分:1)

我建议将您的项目移动到{2017}和NuGet 4引入的PackageReference样式(远离packages.config)(最近的15.2更新,这也支持经典.net项目 - 不仅是.net core / .net标准项目)。最大的区别在于依赖关系是可传递的,因此您只需指定从Pr1到N1的包引用,并自动获取N1引用的N2版本。如果然后从项目Pr2到Pr1添加项目引用,则此项目将自动引用N1和N2。因此,如果您更新Pr1使用的N1版本,它将获得N1所需的N2更新,而Pr2也将使用新的N1和N2而不进行任何更改。

有关如何使用PackageReference的信息,请参阅this NuGet blog post,特别是第34节"那些不是.NET Core的其他项目类型呢?"