【发布时间】:2014-01-25 15:28:03
【问题描述】:
想象以下场景:
Solution1.sln包含项目A、B和C。 (.NET 4.0,C#)
Solution2.sln包含项目A、B和D。 (.NET 4.0,C#)
在Solution2.sln 工作的开发人员在B 中添加了对D 的引用。显然,Solution1.sln 不再编译,因为它不包含 D(经过测试,以确保使用 VS2010、VS2013 和独立的 MSBuild)。
“问题”是运行Solution1.sln 的夜间构建工作正常,令人惊讶。当我查看构建服务器上的.sln 文件时,我发现它已被修改为添加缺少的项目。
乍一看,这似乎是一个不错的功能,但我宁愿意识到解决方案已被破坏,而不是构建可以神奇地工作。
有没有办法在 TFS2013 中关闭此功能?我非常肯定这不会发生在 TFS2010 中,但我不能说 TFS2012。
【问题讨论】:
-
不应该那样做。您确定在构建框中修改了 sln 文件吗?能否打开服务器上的 sln 文件查看引用指向的位置?
-
@AdarshShah .sln 的“修改日期”比构建工作流程的“获取工作区”部分的所有其他文件晚一分钟。也许我应该提到缺少的项目 is 在工作区中,而不是在解决方案中。构建服务器上的
.sln文件包含对正确项目的引用。 -
是项目引用还是程序集引用?
-
这是一个与其他项目和解决方案位于同一目录的项目。我想它可以使用它的 GUID 找到正确的项目。
-
当您说“在 Solution2.sln 中工作的开发人员在 B 中添加了对 D 的引用”。这是项目引用还是程序集引用?