2013-11-15 39 views
3

當我嘗試使用聲納運行程序分析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。謝謝你爲我節省了很多時間。 –

回答

2

以下添加到您的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

它幫助了我:)。謝謝 –

1

對於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」

相關問題