尝试在C#项目

时间:2016-12-25 19:00:28

标签: c# visual-studio-2015 sonarqube sonarqube-msbuild-runner

我正尝试从命令行使用 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)

1 个答案:

答案 0 :(得分:1)

通过在我们的解决方案中编辑主项目的csproj文件,已解决此问题。它最初看起来像这样:

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

$(MSBuildProjectName)变量在声纳扫描期间运行msbuild时似乎确实有效,它生成了
xxc3zd2a.tmp_proj 文件夹,而不是实际的项目名称。更换时 带有项目名称的 $(MSBuildProjectName)。我们的解决方案有4个项目,但我只更改了其中一个。

请注意,当只运行msbuild时,不需要更改csproj文件......