VS2010中的代码覆盖率停止工作 - 可能是在安装PEX之后

时间:2012-02-14 08:04:01

标签: visual-studio-2010 code-coverage pex

我已经设法在VS2010 Premium中使用我的一个解决方案获得代码覆盖率。结果出来了,一切都很好。这是不久前的。

与此同时,我安装了PEX& Moles并尝试使用这些工具,即完成了一些教程等。现在,如果我尝试使用相同的测试设置来计算代码覆盖率,我会收到以下消息:

  

代码覆盖率分析引擎抛出异常:   无法加载DLL' Microsoft.VisualStudio.Coverage.Symbols.dll'。无法找到程序。

     

(HRESULT异常:0x8007007F)

(无法找到'程序'是我对本地化文本的翻译。)

我试图将VS2010抱怨的DLL文件作为部署项包含在内,我也能够看到它们出现在测试部署文件夹中。但是,这并没有解决任何问题。

无论我尝试为哪个项目计算代码覆盖率,这都是一致的错误。我怀疑PEX / Moles应该受到责备,因为我在安装pex之前已经工作了,现在代码覆盖不再适用于VS2010 IDE。当然可能有其他原因,但我还没有安装那么多其他扩展。此外,代码覆盖率工作与不工作之间的时间间隔或多或少与我安装PEX相吻合。

这可能与存储在某处的某些用户设置有关吗?我注意到重新安装IDE后我所有的旧设置都神奇地到位了。可能是我需要在某处删除某些内容吗?

也许我还应该声明我在本地装配我的装配体。没有团队网站或TFS服务器。

正在寻找解决方案,我找到了以下链接,但是这些链接似乎与我的问题无关:

上面的最后一个链接指出应该将Microsoft.VisualStudio.Coverage.Symbols.dll和Microsoft.VisualStudio.Coverage.Analysis.dll文件保存在同一位置。两者都位于我机器上的以下位置:

    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies

我的机器实际上是64位机器,但是,上述文件位于32位位置。这可能是原因吗?

感谢您解决此问题的任何帮助(可能与PEX无关!)

编辑2012-02-16 :我能够运行测试,并且还获得在相关位置生成的data.coverage文件。但是,在资源管理器中双击data.coverage文件并尝试在VS2010(代码覆盖率结果窗口)中展开它时,我收到以下错误消息:

  

代码覆盖率分析引擎抛出异常:

     

图像文件"我想要检测的dll文件的名称"无法找到?

如果我查看测试结果的out文件夹,我可以看到上面错误消息中提到的DLL实际存在!还有.instr文件,我采用的是实际发生的仪器?

由于缺少权限,我目前无法覆盖C:\ Windows \ system32下的dbghelp.dll文件。我确实尝试将Microsoft Visual Studio 10.0 \ Common7 \ IDE下的dbghelp.dll文件包含在我的testsettings下作为部署项。 dbghelp.dll(以及我作为部署项添加的Microsoft.VisualStudio.Coverage.Symbols.dll)都存在于Testresults out文件夹中。但我仍然得到上面提到的错误消息。

修改2012-02-17 我在同事计算机上查看了下面提到的dll的版本

  • Microsoft.VisualStudio.Coverage.Symbols.dll
  • dbghelp.dll

我们在同一个地方有完全相同的版本!将我的项目从我们的源存储库(包括测试设置)中提取到他的机器上后,他能够在项目中运行测试并随后在VS2010中显示代码覆盖率。罪魁祸首很可能不是dll本身,而是在Visual Studio环境中发生了一些变化?

修改2012-02-17 有人建议,我的同事机器而不是我的机器上工作的原因可能是由于GAC中注册的dll版本不匹配。我尝试提取GAC的内容,并使用Guiffy来获得差异,最终得到一个约。 100 dll不匹配。虽然版本中没有一个版本,但没有与本文中提到的dll相关。 我的同事也尝试安装64位版本的PEX,并且能够完成一次探索并随后显示测试项目的代码覆盖率。通过代码覆盖,我可以参考原始的VS2010功能,而不是PEX中的功能来查看代码覆盖率。所以我猜这种规则排除了PEX,但仍然无法帮助我获得VS2010代码覆盖率的结果。 : - (

编辑2013-10-22 我刚刚被分配了一台安装了VS2010和R#7.1.1000.900的新Windows 8机器。我没有安装PEX,我得到了同样的错误。这可能与testsettings文件中的一些尴尬设置有关吗?我曾尝试在Resharper中进行单元测试,但仍然遇到同样的错误......

1 个答案:

答案 0 :(得分:0)

我不确定它是否与Pex有任何关系。尝试使用dbghelp.dll下的较新版本替换Windows\system32目录下的\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE