我正尝试从命令行使用 SonarQube Scanner for MSBuild 分析我的C#代码。
我已经为MSBuild 2.2.0.24(http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild)安装了SonarQube扫描仪并具备所有先决条件。
我正在运行以下命令:
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)
答案 0 :(得分:1)
通过在我们的解决方案中编辑主项目的csproj文件,已解决此问题。它最初看起来像这样:
<OutputPath>$(BuildOutputPath)\bin\$(MSBuildProjectName)\$(Configuration)</OutputPath>
但 $(MSBuildProjectName)变量在声纳扫描期间运行msbuild时似乎确实有效,它生成了
xxc3zd2a.tmp_proj 文件夹,而不是实际的项目名称。更换时
带有项目名称的 $(MSBuildProjectName)。我们的解决方案有4个项目,但我只更改了其中一个。
请注意,当只运行msbuild时,不需要更改csproj文件......