TFSBuild / MSBuild和项目参考与文件参考

我们有一个使用TFS Build构建的项目引用的大型VS解决方案,如下所示:

Solution
- Project 1
- Project 2
- Project ...
- Project N

由于解决方案太大,我们有几个我们日常使用的小型解决方案:

SubSolution
- Project 1
- Project 19

问题是开发SubSolution的开发人员发现它没有建立,因为找不到项目引用,所以他们改变了项目以使用文件引用。

然后,继续打破TFS Build,因为它们尚未建立(即使项目在相同的解决方案中),TFS Build也无法找到这些文件引用。 有没有办法解决这两种引用之间的拔河问题? 分解解决方案的正确方法是什么?


分解解决方案的正确方法是什么?

通过Patterns&Practices团队查看TFS指南中的这一章:

第3章 - 构建源代码管理中的项目和解决方案

请特别注意“分区解决方案”场景的注释(我相信您实际上正在尝试实施):

与以前版本的Visual Studio不同,Visual Studio 2005依赖于MSBuild。 现在可以创建不包含所有引用项目并且仍然没有错误地构建的解决方案结构。 只要首先构建主解决方案,从每个项目生成二进制输出,MSBuild就能够在解决方案的范围之外跟踪项目引用并成功构建。 这只适用于使用项目引用而非文件引用的情况。 您可以成功构建从Visual Studio构建命令行和IDE中以此方式创建的解决方案,但默认情况下不能与Team Build构建。 为了使用Team Build成功构建,请使用包含所有项目和依赖关系的主解决方案。


无论您如何组织构建,开发人员都应该了解引用的工作原理,并在引用更改时注意, 除非他们打算更改构建过程否则他们不应检查这些更改。

关于组织你的构建的问题 - 正如Dmytrol所说的那样,项目引用应该在解决方案之间起作用(只要目标已经构建,无论如何也是如此)。

我的建议是将您的项目分组为小型可行解决方案,并在这些解决方案中使用项目参考。 您的主要解决方案文件/构建也可以使用项目引用,但是如果您发现较小的解决方案之间的项目引用难以维护,则可以使用文件引用,并通过项目依赖项或项目构建顺序控制构建顺序(可在Visual Studio通过右键单击解决方案中的项目)。

链接地址: http://www.djcxy.com/p/45147.html

上一篇: TFSBuild/MSBuild and Project Reference vs File Reference

下一篇: Finding the Reachability Count for all vertices of a DAG