TFS 2012 + VS 2013 + Microsoft伪造编译问题(仅在TFSBuild期间)

use*_*559 6 tfs tfsbuild microsoft-fakes tfs2012 visual-studio-2013

我们正在使用TFS 2012(更新3)和VS 2013 RC.我们有一个带有两个项目的.sln文件 - 主项目/程序集和UnitTest项目.单元测试项目正在利用Microsoft Fakes.在Visual Studio中(我们使用的是Premium),我可以编译.sln并运行测试.在构建代理上,我可以使用Visual Studio编译和构建.sln并运行测试.但是当我们对构建进行排队时,它无法构建UnitTest项目,因为它无法找到Fakes程序集.它似乎不像在Visual Studio中构建时那样动态创建它.通常在VS中创建fakes dll并将其放在FakeAssemblies文件夹中.构建失败后,我可以登录并看到它根本没有创建FakeAssemblies目录.

错误是... C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1605):无法解析此引用.无法找到程序集"System.Web.Http.5.0.0.0.Fakes".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.

我们的构建使用默认模板 - 我们选择构建.sln(具有主程序集和单元测试项目).我们不应该在那个.sln中包含UnitTest吗?在构建期间是否还有其他方法可以编译UnitTest?

有没有人知道为什么构建不会像Visual Studio那样动态创建Fake程序集?

谢谢!!!

Ale*_*lex 2

我遇到了同样的问题,但使用的是 TFS 2012 和 VS 2012,并通过在 TFS Server 中安装 Visual Studio 解决了该问题。所以如果你已经在那里安装了 VS,这个建议对你没有帮助。

首先,我尝试将该程序集从本地计算机中的文件夹复制到 TFS 服务器中的同一文件夹。它位于c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.QualityTools.Testing.Fakes.dll.

问题解决了,测试项目构建成功,但是每个使用Fakes的测试都没有通过。有一个例外:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:UnitTestIsolation 检测未能初始化。请重新启动 Visual Studio 并重新运行此测试。

我没有时间,决定进行第二步,在 TFS 机器中安装 Visual Studio,所有问题都消失了