在 C# 项目上尝试 运行 SonarQube Scanner for MSBuild 时构建失败
Build fails when try to run SonarQube Scanner for MSBuild on C# project
我正在尝试使用 SonarQube Scanner for MSBuild 从命令行分析我的 C# 代码。
我已经安装了适用于 MSBuild 2.2.0.24 (http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild) 的 SonarQube Scanner,并且具备所有先决条件。
我正在运行执行以下命令:
SonarQube.Scanner.MSBuild.exe begin /k:"MyProject" /n:"My Project" /v:"1.0.0.0"
"C:\Program Files (x86)\MSBuild.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)
这个问题已经通过在我们的解决方案中编辑主项目的 csproj 文件得到解决。它最初看起来像这样:
<OutputPath>$(BuildOutputPath)\bin$(MSBuildProjectName)$(Configuration)</OutputPath>
但是 $(MSBuildProjectName) 变量似乎在 Sonar 扫描期间 运行 msbuild 时起作用,它生成了
xxc3zd2a.tmp_proj 文件夹,而不是实际的项目名称。替换时
$(MSBuildProjectName) 加上它工作的项目名称。我们的解决方案有 4 个项目,但我只更改了其中一个。
请注意,只有 运行 msbuild 时不需要更改 csproj 文件...
我正在尝试使用 SonarQube Scanner for MSBuild 从命令行分析我的 C# 代码。
我已经安装了适用于 MSBuild 2.2.0.24 (http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild) 的 SonarQube Scanner,并且具备所有先决条件。
我正在运行执行以下命令:
SonarQube.Scanner.MSBuild.exe begin /k:"MyProject" /n:"My Project" /v:"1.0.0.0"
"C:\Program Files (x86)\MSBuild.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)
这个问题已经通过在我们的解决方案中编辑主项目的 csproj 文件得到解决。它最初看起来像这样:
<OutputPath>$(BuildOutputPath)\bin$(MSBuildProjectName)$(Configuration)</OutputPath>
但是 $(MSBuildProjectName) 变量似乎在 Sonar 扫描期间 运行 msbuild 时起作用,它生成了
xxc3zd2a.tmp_proj 文件夹,而不是实际的项目名称。替换时
$(MSBuildProjectName) 加上它工作的项目名称。我们的解决方案有 4 个项目,但我只更改了其中一个。
请注意,只有 运行 msbuild 时不需要更改 csproj 文件...