2013-02-22 61 views
0

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

回答

0

最好的选择是将这个通用库放到分支下的通用文件夹中,只要它在其他项目中生成并引用它即可。

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

0

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

CommonLibrary的便宜技巧是(作为构建过程的最后一步),将在每个相关项目中执行源代码更新。像一个虚拟文件。

.\MySolution1.sln 
.\MyBuildTriggerFile1.txt 

然后

.\MySolution2.sln 
.\MyBuildTriggerFile2.txt 

(等,等)。

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

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

然后,您的相关项目可以设置为“建立在变化上”,然后您会很快知道。

......

如果你想为“全自动”和“所有动态”,你会不得不做一些工作,一个自定义的MSBuild任务。

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

XPath and *.csproj

YOUCH。这是很多工作。

.......

我会采取中间立场的方法。

使用“触发器文件”系统......(建议上面).......并且让代码可以每晚一次或“每次检入”......

无论如何。有一个想法。但我不知道任何东西。

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