如何合并CI程序包(自动程序包版本控制)和项目引用?

时间:2019-01-17 12:35:35

标签: .net continuous-integration nuget

我有一个包含许多库的解决方案。它们均使用Azure DevOps提供的自动程序包版本发布为NuGet程序包。

其中一些库依赖于同一解决方案中的其他库。我当前的工作流程是对库A进行更改,启动构建以发布新的软件包版本,然后使库B使用新版本的A。

我想改用项目引用,但是对于如何使打包仍然正常工作我一无所知。一个示例场景:

  • 项目A和B的解决方案,其中B引用了A
  • 针对该解决方案启动了构建
  • NuGet软件包A的版本为0.1.0-CI-20190117-120000
  • NuGet软件包B的版本为0.1.0-CI-20190117-120000,并且依赖于软件包A的版本为0.1.0-CI-20190117-120000

我发现Microsoft在2016年发布了一些博客主题,探讨了该主题(part 1part 2),但似乎没有后续行动。

这个问题已经解决了吗,还是我必须继续使用当前的方法?

1 个答案:

答案 0 :(得分:1)

在您的方案中,您实际上不需要创建和使用程序包即可在解决方案中共享代码。 NuGet软件包实际上只是在解决方案外部共享代码的方式,而一旦安装了NuGet软件包,那么实际上发生的一切就是从属项目将程序集复制到解压缩NuGet软件包的构建输出中。

如果您认为解决方案中使用的库可能需要由离散代码库中的其他人使用,则生产NuGet软件包仍然值得,但NuGet不会在解决方案内部增加太多(如果有的话)价值。 / p>

仍然可以独立于程序包版本控制来实现程序集版本控制,以便您在解决方案内部引用的程序集版本与您在NuGet程序包中交付的版本可以与其他团队共享。

Matt Cooper在上面引用了有关GitVersion的博客文章。这是一种基于源代码自动生成版本号的好方法,我强烈建议使用(我经常使用Mainline选项)。