問題
それで、私たちは非常に奇妙な問題に遭遇しました。現在、これが当社の状況です。2 つの TFS コレクションに接続された 2 つのビルド サーバーがあります。
- コレクション A には、Windows Server 2012 R2 がインストールされたビルド サーバーがあります。
- コレクション B には、Windows Server 2008 R2 がインストールされたビルド サーバーがあります。
両方のサーバーに sonar-msbuild-runner がインストールされています。コレクション A ではすべて正常に動作しますが、コレクション 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 を実行しているローカルの開発マシンでこのエラーを再現できました。最初のアサートでデバッグ ポイントを設定し、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
考えられる解決策
このエラーは、このKB 記事に直接つながります。この修正を適用できませんでした。
さらに、バージョン 4.5.2 が既にインストールされており、互いに競合する可能性があると考えたため、.NET Framework 4 を削除しました。現在、ビルド サーバーには 4.5.1 と 4.5.2 のみがインストールされており、解決策は不明です。最後のオプションとして、コレクション B のビルド サーバーを Windows Server 2012 R2 にアップグレードして、これが解決策になるかどうかを確認することを検討しています。
編集:修正
内部エラーにより、VS2013 がアンインストールされました。そのため、VS2013 を再インストールして 4 を更新する必要がありました。また、バージョン 1.0 にアップグレードしました。これで問題は解決したようです。コード カバレッジが Web ポータルで利用できるようになりました。