构建流程设计:Nuget 与 Artifact 依赖关系

Build Process Design: Nuget vs Artifact Dependencies

我有一个依赖于内部共享库 B 的应用程序 A。A 和 B 各有自己的存储库。

我正在使用 TeamCity 10 构建这两个项目。我考虑这样做的两种方式:

  1. 构建 B 并将 dll 发布为工件。构建 A 并依赖于 B。

  2. 构建 B 并作为 nuget 包发布。使用对 B 的 nuget 依赖构建 A。

我的问题是:

  1. 哪种方法更好?

    • 工件依赖项似乎是最简单的方法并且可以完成工作,但如果我们走 nuget 路线,我们可以概括依赖项解析并将其与构建服务器分离来完成它。我可以看到 nugets 的另一个优点是,当开发人员检查 B 的解决方案时,任何依赖项都可以通过 nuget 解决。而对于工件依赖项,开发人员本地机器上的某种类型的预构建脚本需要 retrieve/copy dll 工件,模仿 TeamCity 对构建服务器上的工件依赖项所做的操作(是否有更好的方法?)。
  2. 如果我们实现 nuget 依赖项,为什么我们还需要工件依赖项?

提前感谢您提供的任何反馈。

最好的方法是根据您的项目开发进度。

如果项目A和项目B还在开发中,建议使用神器依赖。由于您在开发项目时会经常更改项目,因此在 TeamCity 中,您只需将工件依赖项添加到构建配置中即可。无论您如何更改项目代码,构建配置都无需更改。

如果项目开发完成,NuGet依赖是一个不错的选择。因为如果你在开发项目时使用了NuGet依赖,当开发过程中任何代码发生变化时,你都需要重新打包并重新安装到你的项目中。

我更愿意使用 Nuget 就像你在问题中已经提到的优点一样。当您想将共享库添加到 project/solution 以在本地构建时,它更方便并且可以节省更多时间。