MSBuild获取所有项目引用/使用项目

时间:2013-02-22 19:31:35

标签: msbuild build-process build-automation

我们希望设置一个构建过程,以防止在我们的分支上发生更改。我们有一个由多个项目引用的公共库/项目。因此,当对此公共库进行更改时,使用它的所有其他项目也可以构建并检查是否存在重大更改。到目前为止,使用MSBuild,我们已经能够做到相反。从项目中,我们可以收集所有依赖项。但是我怎样才能获得所有引用/使用msbuild公共库的项目?

2 个答案:

答案 0 :(得分:0)

最好的选择是将这个公共库放到你的分支下的公共文件夹中,只要它在其他项目中构建并从那里引用它。

否则,我不确定msbuild是否确实支持识别引用二进制文件的位置。如果可能的话,这将是一个耗时的过程,具体取决于您的分支的大小,它会为您的公共库构建增加不必要的开销,并且一旦它开始使用它将严重影响您的分支的构建过程的可维护性其他地方的公共图书馆。

答案 1 :(得分:0)

如果你想做一些“推送”通知,这将是一些工作。

廉价的技巧是(作为构建过程的最后一步)CommonLibrary,将在每个依赖项目中进行源代码更新。就像一个虚拟文件。

.\MySolution1.sln
.\MyBuildTriggerFile1.txt

然后

.\MySolution2.sln
.\MyBuildTriggerFile2.txt

(等等)。

让CommonLibrary构建过程进行并对依赖项目进行某种快速更新和签入。

这里的好处是,相对容易实现。 这里的不好之处在于,您必须手动保持CommonBuild项目中的列表更新。 另一个好处是......你实际上并没有做构建,你只是发送一个小小的消息说“发生了什么事”。因此,CommonBuild库不会陷入困境。

然后,你的依赖项目可以设置为“以变化为基础”,然后你就会很快知道。

...

如果你想要“全自动”和“全动态”,你将不得不使用自定义MSBuild任务做一些工作。

您必须开始提取csproj文件,解析它们,然后将它们链接回CommonLibrary。

XPath and *.csproj

YOUCH。那是很多工作。

.......

我会采取中间立场。

使用“触发文件”系统......(上面建议).......并且代码建立一晚一次或“每次登记”...... < / p>

反正。有一个想法。但我不知道开箱即用的东西。

............