3

我有一个 Visual Studio Team Services 构建定义,其中包含一个由 Sonar Begin Analysis 和 End Analysis 任务包围的 Visual Studio 构建任务。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。VSTS任务使用的MSBuild.SonarQube.Runner版本为1.0.1。

4

1 回答 1

5

抱歉这么久才回复!

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

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

  • SonarQube 开始
  • MSBuild(不带 /p:IsPackaging=true)
  • SonarQube 结束
  • MSBuild your_SP_project.csproj /t:Package

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

请让我知道这是否有效!

于 2015-12-07T16:39:12.290 回答