想象一下以下场景:
Solution1.sln
包含项目A
,B
和C
。 (.NET 4.0,C#)
Solution2.sln
包含项目A
,B
和D
。 (.NET 4.0,C#)
在Solution2.sln
工作的开发人员在D
中添加了对B
的引用。显然,Solution1.sln
不再编译,因为它不包含D
(经测试,只是为了确保VS2010,VS2013和独立的MSBuild)。
“问题”是运行Solution1.sln
的每晚构建工作正常,令人惊讶。当我查看构建服务器上的.sln
文件时,我发现它已被修改以添加缺少的项目。
这一开始看起来很不错,但我宁愿意识到解决方案的破坏比构建神奇的工作要好。
有没有办法在TFS2013中关闭此功能?我相当肯定,这不会发生在TFS2010中,但我不能说TFS2012。
答案 0 :(得分:0)
解决方案只是一组项目,仅此而已。
当MSBuild处理解决方案时,它会计算构建顺序分析项目和二进制引用 - 此过程在Visual Studio和Team Build(即TFS)中是相同的。对于项目引用,它从构建输出中确定项目是否应该重建。只要MSBuild能够解析文件系统上的引用,一切都很好。
您将在Visual Studio中看到相同的行为:您只是收到警告,但构建成功。
Team Build为所有构建输出使用单个目录,因此用于构建解决方案的顺序也会影响二进制引用。