0

コマンドラインからMSBuild の SonarQube Scanner を使用して C# コードを分析しようとしています。

MSBuild 2.2.0.24 用の SonarQube スキャナー ( http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild ) をインストールし、すべての前提条件を満たしています。

次のコマンドを実行しています。

SonarQube.Scanner.MSBuild.exe begin /k:"MyProject" /n:"My Project" /v:"1.0.0.0"

"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /t:Rebuild

SonarQube.Scanner.MSBuild.exe end

しかし、自分のソリューション (.Net Framework 4.5.1) で msbuild を実行すると、ビルドが失敗します。ソリューションは、ソナー スキャンを行っていないときに正常にビルドされるため、ソナー スキャナー プラグインと関係があるはずです。

SonarQube.Analysis.xml では、sonar.host.url、sonar.login、および sonar.password のみを提供しました。

これは、msbuild からの出力です。

Build FAILED.

"C:\git\src\MySoltion.sln" (Rebuild target) (1) ->
"C:\git\src\\MyProject\MyProject.csproj" (Rebuild target) (2) ->
"C:\git\src\\MyProject\xxc3zd2a.tmp_proj" (_CompileTemporaryAssembly target) (4) ->
(CoreCompile target) ->
  CSC : error CS0016: Could not write to output file 'C:\git\src\\MyProject\Build\bin\xxc3zd2a\Debug\MyProject.exe
.RoslynCA.json' -- 'Could not find a part of the path 'C:\git\src\\MyProject\Build\bin\xxc3zd2a\Debug\MyProject.ex
e.RoslynCA.json'.' [C:\git\src\MyProject\xxc3zd2a.tmp_proj]

    0 Warning(s)
    1 Error(s)
4

1 に答える 1

1

この問題は、ソリューションのメイン プロジェクトの csproj ファイルを編集することで解決されました。最初は次のように見えました。

<OutputPath>$(BuildOutputPath)\bin\$(MSBuildProjectName)\$(Configuration)</OutputPath>

ただし、Sonar スキャン中に msbuild を実行すると、 $(MSBuildProjectName)変数が機能するように見え、実際のプロジェクト名ではなく、
xxc3zd2a.tmp_projフォルダーが生成されました。
$(MSBuildProjectName)をプロジェクト名に置き換えると、機能しました。私たちのソリューションには4つのプロジェクトがありますが、そのうちの1つだけを変更しました。

msbuild のみを実行する場合は、csproj ファイルを変更する必要がないことに注意してください...

于 2017-01-04T20:18:56.837 に答える