Gallio错误:未找到MSTest可执行文件

问题描述:

当我尝试使用声纳运行程序分析VS2012 C#解决方案时,我遇到了Gallio恼人的问题。当加利奥尝试推出我的单元测试,我可以在日志中找到此问题:Gallio错误:未找到MSTest可执行文件

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

我已经尝试过的解决方案提出了一些建议暴露herehere(我已经安装了代理商VS 2012和我添加了一个注册表项与我的VS2012安装路径),但似乎没有任何工作。

非常感谢您的帮助。

编辑:

看来,这个问题来自于公堂源代码中的硬编码的注册表值,因为当我尝试添加INSTALLDIR注册表项VS2010指向我的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服务器中。

+0

这是一个耻辱......我想同样的事情,我不会将我的测试转换为NUnit。谢谢你为我节省了很多时间。 –

以下添加到您的Machine.config位于C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ 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> 

然后,你将需要添加一个名为安装目录有一个注册表项 到以下位置 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ VisualStudio的\ 10.0

然后运行:的 “\程序文件(x86)\微软的Visual Studio 11.0 \ Common7 \ IDE \ INSTALLDIR => C” 值以下命令 regsvr32“C:\ YourSonarInstalati on \ opencover \ x86 \ OpenCover.Profiler.dll

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

+0

感谢您的回答,对我来说已经太迟了,但希望对其他开发者有用。 – Paul

+0

它帮助了我:)。谢谢 –

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

将以下内容添加到位于C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config和/或C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319的machine.config中: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注册表项,值为 “INSTALLDIR => C:\ Program Files文件(x86)的\微软的Visual Studio 12.0 \ Common7 \ IDE \” 到以下位置HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ VisualStudio的\ 10。0

然后运行下面的命令REGSVR32 “C:\ Program Files文件(x86)的\ OpenCover \ 86 \ OpenCover.Profiler.dll”