[英]MsBuild Runner error - sonar.cs.fxcop assembly must be set
[英]Sonar-msbuild-runner exits with 255 error, Faulting CLR Module
所以,我們遇到了一個非常奇怪的問題。 目前這是我們的情況。 我們有兩個構建服務器連接到兩個TFS集合
兩台服務器都安裝了sonar-msbuild-runner。 在Collection A上一切正常,但在Collection B上的構建服務器上執行分析時,會出現以下錯誤。
Faulting application name: SonarQube.MSBuild.PostProcessor.exe, version: .9.0.0, time stamp: 0x559d2baa
Faulting module name: clr.dll, version: 4.0.30319.34209, time stamp: 0x5348961e
Exception code: 0xc0000005
Fault offset: 0x00002d1f
Faulting process id: 0x11ec
Faulting application start time: 0x01d0bf9ffbb54cab
Faulting application path: D:\PathToSolutionFolderOnBuildServer\.sonarqube\bin\SonarQube.MSBuild.PostProcessor.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 3cbfce4b-2b93-11e5-b84b-0050569a7ef0
我們在Github上檢索了最新版本,並添加了額外的日志記錄,以找出導致錯誤的行。 這條線造成了問題 。
我能夠在運行Windows 7的本地開發機器上使用以下代碼重現此錯誤。 在第一個Assert上設置調試點然后通過將鼠標懸停在它上面來嘗試訪問projectName
屬性時,它將導致我的整個Visual Studio崩潰。
[TestMethod]
public void TestMethod1()
{
using (TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs-url:8080/tfs/collectionname/")))
{
IBuildServer buildServer = collection.GetService<IBuildServer>();
string uri = "vstfs:///Build/Build/4238";
var buildUri = new Uri(uri);
IBuildDetail build = buildServer.GetMinimalBuildDetails(buildUri);
string projectName = build.TeamProject;
ITestManagementService tcm = collection.GetService<ITestManagementService>();
ITestManagementTeamProject testProject = tcm.GetTeamProject(projectName);
Assert.IsNotNull(testProject);
IBuildCoverage[] coverage = testProject.CoverageAnalysisManager.QueryBuildCoverage(uri, CoverageQueryFlags.Modules);
Assert.IsTrue(coverage.Length > 0);
}
}
導致以下錯誤消息:
Faulting application name: devenv.exe, version: 12.0.31101.0, time stamp: 0x54548724
Faulting module name: clr.dll, version: 4.0.30319.34209, time stamp: 0x5348961e
Exception code: 0xc0000005
Fault offset: 0x004c2b43
Faulting process id: 0x10e4
Faulting application start time: 0x01d0bf9ec962fde0
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 14f6496d-2b9b-11e5-a293-083e8ea0a055
該錯誤直接導致這篇知識庫文章 。 我們無法應用此修復程序。
此外,我們刪除了.NET框架4,因為已經安裝了4.5.2版,我們認為它可能會相互沖突。 現在只有4.5.1和4.5.2仍然安裝在構建服務器上,我們不確定解決方案是什么。 作為最后一個選項,我們正在考慮將集合B上的構建服務器升級到Windows Server 2012 R2,以確定這是否可以作為解決方案。
由於內部錯誤,VS2013已卸載。 所以我們不得不重新安裝VS2013並更新4.我們還升級到1.0版。 這似乎解決了這個問題。 現在可以在我們的門戶網站上找到代碼覆蓋率。
這看起來像.NET框架中的問題/錯誤,正如您也調查過的那樣。 如果您可以升級到Windows Server 2012 R2,那么這將是最好的方法。
sonar-msbuild-runner還有一個解決方法:您可以通過設置環境變量來禁用代碼覆蓋檢索:SQ_SkipLegacyCodeCoverage。 但是,如果你這樣做,SonarQube將無法獲得代碼覆蓋率數據......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.