我们想设置一个构建过程来防止对我们的分支进行破坏性更改。我们有一个公共库/项目被多个项目引用。因此,当对该公共库进行更改时,使用它的所有其他项目也可以构建并检查重大更改。到目前为止,使用 MSBuild,我们已经能够反其道而行之。从一个项目中,我们可以收集它的所有依赖项。但是我怎样才能获得所有引用/使用带有 msbuild 的公共库的项目?
2 回答
如果您想做一些“推送”通知,那将是一些工作。
便宜的技巧是(作为构建过程的最后一步)CommonLibrary 将在每个相关项目中进行源代码更新。就像一个虚拟文件。
.\MySolution1.sln
.\MyBuildTriggerFile1.txt
接着
.\MySolution2.sln
.\MyBuildTriggerFile2.txt
(等等等等)。
并让 CommonLibrary 构建过程进行一些快速更新和签入相关项目。
这里的好处是,这相对容易实现。糟糕的是,您必须手动更新 CommonBuild 项目中的列表。另一个好处是……您实际上并没有进行构建,您只是发送了一条小消息,说“发生了一些事情”。所以 CommonBuild 库不会陷入困境。
然后,您的依赖项目可以设置为“建立在变化之上”,然后您很快就会知道。
……
如果您希望它“全部自动”和“全部动态”,您将不得不使用自定义 MSBuild 任务做一些工作。
您必须开始提取 csproj 文件,解析它们,然后将它们链接回 CommonLibrary。
你。这是很多工作。
…………
我会采取中间立场。
使用“触发文件”系统......(上面建议)......并让代码构建一个晚上或“每次签到”......
反正。有个主意。但我不知道任何开箱即用的东西。
…………
最好的选择是在构建时将此公共库拖放到分支下的公共文件夹中,并从那里在其他项目中引用它。
否则,我不确定 msbuild 是否支持识别引用二进制文件的位置。如果可能的话,这将是一个耗时的过程,具体取决于您的分支的大小,并且它会给您的公共库构建增加不必要的开销,并且一旦它开始多次使用这个公共库,它将严重影响您的分支构建过程的可维护性其他地方。