我最近从Microsoft Visual Studio 2013 Update 3(高级版)升级到Microsoft Visual Studio 2013 Update 4(高级版),现在我现有的单元测试项目已停止编译。它失败并出现错误:
类型'Microsoft.QualityTools.Testing.Fakes.Stubs.StubBase`1' 在未引用的程序集中定义。你必须添加一个 参考汇编'Microsoft.QualityTools.Testing.Fakes, Version = 12.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
我们和很多其他人一样,在VS2013中引入了一个类似的问题,可以通过在FakesAssemblies中手动删除.messages文件(通过文件资源管理器或解决方案资源管理器查看所有文件)来解决项目文件夹中的文件夹。然而,即使我删除了整个FakesAssemblies文件夹,这也无法解决问题。
对项目的引用(包括正确的版本是他们在项目中)。我已经删除了引用并对它进行了读取但它没有效果,它们仍然无法编译。
单元测试项目仍然使用Visual Studio 2013 Update 3编译并传递给其他同事机器。
使用MS假货的新项目单元测试项目也无法构建。
如此简短,卸载Update 4还有什么我可以尝试的吗?
如果不是,我将在Microsoft Connect上记录错误。
答案 0 :(得分:53)
在Microsoft.QualityTools.Testing.Fakes
的参考属性中,将“特定版本”属性更改为 FALSE
。这样做将允许Visual Studio 2013使用您计算机上安装的任何版本的Microsoft.QualityTools.Testing.Fakes
。
使用Visual Studio 2013 Update 4,Microsoft将Microsoft.QualityTools.Testing.Fakes.dll
的版本号从11.0增加到12.0;这就是导致事情破裂的原因。
答案 1 :(得分:5)
我们还有一些与Shims有关的错误,但我们只是将它们转换为Stubs。
我们必须手动以这种方式升级所有项目,所有VS实例包括构建服务器。
答案 2 :(得分:0)
尝试清理整个项目并重新编译, 这对我有用!
答案 3 :(得分:0)
在这里尝试了所有答案后,它终于为我工作了。 代码:
using (ShimsContext.Create())
(习惯)抛出:
无法从库中获取函数SetDetourProvider的地址 'C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Team Tools \ Performance Tools \ vsperfcorprof.dll'。
我的测试项目在2012年运行。我用以下内容替换了以下dll:
他们位于:
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies \
希望它有所帮助。
答案 4 :(得分:0)
我添加了以下程序集并重建了我的解决方案。它开始为我工作。 一个。 C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.QualityTools.Testing.Fakes.dll
B中。 C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll