项目引用v NuGet依赖项

时间:2013-05-31 11:57:49

标签: reference dependencies teamcity nuget

我正在将NuGet引入我们的软件开发过程,包括外部二进制文件(例如Moq,NUnit)和包含共享功能的内部库项目。

TeamCity正在从我们的内部库项目生成NuGet包,并将它们发布到本地存储库。我修改的解决方案文件使用本地存储库来访问NuGet包。

考虑以下源代码解决方案:

  1. Company.Interfaces.sln 构建 Company.Interfaces.1.2.3.7654.nupkg
  2. Company.Common.sln 通过其NuGet包包含对Company.Interfaces的引用,并使用Company.Interfaces构建 Company.Common.1.1.1.7655.nupkg .1.2.3.7654作为依赖包括在内。
  3. Company.DataAccess.sln 使用Company.Common nupkg添加 Company.Interfaces和Company.Common作为参考。它构建 Company.DataAccess.1.0.8.7660.nupkg ,包括Company.Common.1.1.1.7655作为依赖组件。
  4. Company.Product.A 是一个网站解决方案,其中包含对所有三个图书馆项目的引用(通过选择 Company.DataAccess NuGet包)。
  5. 问题:

    如果对Company.Interfaces的源代码更改,是否始终需要重新编号和重建中间包(Company.Common和Company.DataAccess)并更新Company.Product.A中的包?

    或者这取决于源代码是否改变

    • 修复错误,或
    • 新功能,或
    • 一个突破性的变化?

    实际上,我有8级依赖库包。如果有必要,是否有更新整个软件包树的工具支持?

    我知道语义版本。

    我们正在使用VS2012,C#4.0,TeamCity 7.1.5。

2 个答案:

答案 0 :(得分:3)

最好在每次登记时更新所有内容,以便及早进行测试。

使用工件依赖项(http://confluence.jetbrains.com/display/TCD7/Artifact+Dependencies)和“Finish Build”构建触发器(甚至只是“Nuget Dependency Trigger”)可以轻松管理您所描述的内容。

答案 1 :(得分:1)

我们在基础项目上编写了自己的构建配置(在本例中为 Company.Interfaces.sln ),它可以一次构建和更新整个树。它会检查更新的packages.config文件和.nuspec文件。我不能说这最终为我们节省了多少时间,即使它在开始时听起来有些过分。

需要注意的一点是:我们编写的脚本会检查文件,即使链条在两者之间出现故障,也可以让我们在本地计算机上修复它,检查修复程序并重新启动发布。 / p>