仅当项目或依赖项在Azure devop中发生更改时才生成

时间:2019-02-12 07:03:57

标签: msbuild azure-devops azure-pipelines

我在同一文件夹中有多个项目,每个项目都创建一个微服务。每个都有独立的构建和发布管道。当前,每个项目都已配置为在将代码提交到其自己的子文件夹中时触发。我目前正在添加一些项目中使用的通用代码。如果微服务使用正在更改的库,我希望微服务可以构建和部署。

实现此目标的最佳方法是什么?

理想情况下,我想像这样的事情: 在根目录上触发的构建任务->使用MsBuild通过检查项目的依赖关系-> Build / Abort来确定是否需要构建项目。

这可能吗?

1 个答案:

答案 0 :(得分:0)

如果您想以源代码形式共享代码,并且正在使用.NET Framework项目,那么我发现的最佳(但不是最佳)方法是将项目放在同一文件夹中,并将共享代码放在一个子文件夹中,您包括在两个项目中。将共享代码放在项目的根文件夹之外的文件夹中甚至更糟。

最好的方法(IMO)是以编译(Dll)形式(而不是源形式)共享代码:您可以使用共享代码创建DLL,将其打包在NuGet包中,然后在其中发布NuGet包。一些内部NuGet存储库(例如,您可以将Artifacts feature of Azure DevOps用作组织的NuGet存储库)。需要共享代码的项目通过NuGet引用来实现。优点是可以对Dll / NuGet形式的共享代码进行版本控制(并非所有项目都必须同时更新以进行不兼容的更改),它可以将自己的CI管道与单元测试一起使用,可以使用其CD管道来发布到Artifacts存储库等。

我从前一种方法切换到了后者。海事组织要干净得多。