3

当我尝试使用我的声纳运行器分析我的 VS2012 C# 解决方案时,我遇到了一个恼人的问题。当 Gallio 尝试启动我的单元测试时,我可以在日志中找到这个问题:

  [error] Assembly XXXX   
  Cannot run tests because MSTest executable was not found

我已经尝试了一些在这里这里公开的解决方案提议(我已经安装了 VS 2012 的代理,并且我已经添加了一个带有我的 VS2012 安装路径的注册表项),但似乎没有任何效果。

预先感谢您的帮助。

编辑 :

这个问题似乎来自 Gallio 源代码中的硬编码注册表值,因为当我尝试为 VS2010 添加 InstallDir 注册表项以指向我的 VS2012 安装时,我可以看到一条新的错误消息。

这个新错误是与以下 DLL 相关的 I/O 异常:“Microsoft.VisualStudio.QualityTools.CommandLine.dll”版本 10.0.0.0,我可以在 GAC_MSIL 目录中找到,但在版本 11 中。我的结论是Gallio 与 VS2012 和相应版本的 MSTest 不完全兼容。

我将进行调查以找到一种手动生成 Sonar 能够存储的单元测试报告的方法。

编辑 2:

现在终于没有办法在声纳中收集 mstest 报告了。我找到的唯一解决方案是将使用 MSTest 进行的每个单元测试转换为 NUnit 测试,以便能够使用 Gallio 运行它并在我的 Sonar 服务器中收集结果。

4

2 回答 2

2

将以下内容添加到位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 的 machine.config

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.CommandLine"
                publicKeyToken="b03f5f7f11d50a3a"
                culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0"
               newVersion="11.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

然后,您需要将名为 InstallDir 的注册表项添加到以下位置 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\,其值为“InstallDir => C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\”视觉工作室\10.0

然后运行以下命令 regsvr32 "C:\YourSonarInstalation\opencover\x86\OpenCover.Profiler.dll

这里正在讨论这个问题。上面的潜在解决方案是几天前发布的。 https://code.google.com/p/mb-unit/issues/detail?id=899

于 2014-01-02T15:53:45.303 回答
1

对于 Visual Studio 2013 和 .net 4.5,这是一个类似的过程。

将以下内容添加到位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 和/或 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 的 machine.config 中:

    <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.CommandLine"
                publicKeyToken="b03f5f7f11d50a3a"
                culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0"
               newVersion="12.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

然后,您需要将名为 InstallDir 的注册表项添加到以下位置 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\,其值为“InstallDir => C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\”视觉工作室\10.0

然后运行以下命令 regsvr32 "C:\Program Files (x86)\OpenCover\x86\OpenCover.Profiler.dll"

于 2014-08-21T19:21:34.020 回答