使用Sonar MSBuild Runner和/ p:IsPackaging = True

Pas*_*ger 3 sonar-runner sharepoint-apps sonarqube sonarqube-msbuild-runner azure-pipelines

我有一个Visual Studio Team Services构建定义,其中包含由Sonar Begin Analysis和End Analysis任务包围的Visual Studio Build任务.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. 
Run Code Online (Sandbox Code Playgroud)

当然,我可以首先构建没有/ p的解决方案:IsPackaging = True并在此处运行分析,然后在第二步中进行打包,但这似乎浪费了必须两次构建解决方案的资源.

知道我如何打包SharePoint提供程序托管加载项并使用相同的任务与Sonar进行代码分析?

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

Bog*_*SFT 5

对这么长时间的延迟回答道歉!

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

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

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

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

如果有效,请告诉我!