将 Sonar MSBuild Runner 与 /p:IsPackaging=True 结合使用

Using Sonar MSBuild Runner with /p:IsPackaging=True

我有一个 Visual Studio Team Services 构建定义,其中包含一个 Visual Studio 构建任务,周围是 Sonar 开始分析和结束分析任务。 Visual Studio Build 使用 /p:IsPackaging=True 属性 打包 SharePoint 提供商托管的加载项。如果此 属性 已设置,我会从 Sonar Build Runner 收到以下错误:

2015-11-27T13:23:05.9534586Z WARNING: Duplicate project GUID: "31ef7995-fdbc-4307-9024-a3d640fdf987". 
Check that the project is only being built for a single platform/configuration and that that 
the project guid is unique. The project will not be analyzed by SonarQube. 

当然,我可以先构建解决方案而无需 /p:IsPackaging=True 和 运行 对此进行分析,然后在第二步中进行打包,但这似乎是一种资源浪费构建解决方案两次。

知道如何打包 SharePoint 提供商托管的加载项并使用相同的任务通过 Sonar 进行代码分析吗?

正在使用的声纳版本是5.1.2。 MSBuild.SonarQube.Runner VSTS 任务使用的版本是 1.0.1.

抱歉这么久才回复!

我看过这个,似乎 SharePoint msbuild 目标调用了 "Build" 目标两次 - 一次是正常构建的一部分,一次是打包过程的一部分。为了让 SonarQube 分析跟踪所有构建工件,我们注入了一些依赖于构建任务的逻辑,现在这个逻辑被调用了两次,你会遇到 "Duplicate project GUID" 问题。

这是我在一个简单的 SharePoint 项目上尝试的解决方法 - 将实际构建和打包保留为单独的步骤。所以你的构建定义将是:

  • SonarQube 开始
  • MSBuild(没有 /p:IsPackaging=true)
  • SonarQube 结束
  • MSBuild your_SP_project.csproj /t:包

请注意,需要在您的 Sharepoint 项目上完成对 msbuild 的第二次调用 - 在解决方案上调用 /t:Package 将不起作用,因为尚未导入 SharePoint 目标。

如果可行,请告诉我!