想象以下情况:


Solution1.sln包含项目ABC。 (.NET 4.0,C#)

Solution2.sln包含项目ABD。 (.NET 4.0,C#)


Solution2.sln中工作的开发人员会在D中添加对B的引用。显然,Solution1.sln不再编译,因为它不包含D(经过测试,只是为了确保使用VS2010,VS2013和独立的MSBuild)。

令人惊讶的是,“问题”是运行Solution1.sln的夜间构建正常工作。当我查看构建服务器上的.sln文件时,我看到它已被修改以添加缺少的项目。

乍一看,这似乎是一个不错的功能,但是我宁愿知道解决方案已失效,而不是拥有神奇的构建功能。

有没有办法在TFS2013中关闭此功能?我非常肯定TFS2010中不会发生这种情况,但是我不能说TFS2012。

最佳答案

解决方案只是一组项目,仅此而已。

当MSBuild处理解决方案时,它会计算分析项目和二进制引用的构建顺序-在Visual Studio和Team Build(即TFS)中,此过程相同。对于项目参考,它根据构建输出确定是否应重建项目。只要MSBuild能够解析文件系统上的引用,一切都很好。

您将在Visual Studio中看到相同的行为:只是收到警告,但构建成功。

Team Build对所有构建输出都使用一个目录,因此用于构建解决方案的顺序也会影响二进制引用。

关于.net - TFS默默地修复.sln文件-有没有办法停止它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20980250/

10-10 13:07