我有一个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.
当然,我可以首先在没有/p:IsPackaging=True并对此进行分析的情况下构建解决方案,然后在第二步中进行打包,但这似乎是浪费资源,必须构建两次解决方案。
知道我如何打包SharePoint提供商托管的外接程序并使用Sonar进行代码分析吗?
使用的声纳版本为5.1.2。VSTS任务使用的MSBuild.SonarQube.Runner版本为1.0.1。
很抱歉这么长时间延迟回答!
我看了一下,SharePoint msbuild目标似乎调用了"Build"目标两次——一次是正常构建的一部分,另一次是打包过程的一部分。为了让SonarQube分析跟踪所有构建工件,我们注入了一些依赖于构建任务的逻辑,现在这个逻辑被调用了两次,您会遇到"重复项目GUID"问题。
这是我在一个简单的SharePoint项目上尝试的一个变通方法——将实际构建和打包作为单独的步骤。所以你的构建定义是:
- SonarQube开始
- MSBuild(不带/p:IsPackaging=true)
- SonarQube结束
- MSBuild your_SP_project.csproj/t:包
请注意,需要对您的sharepoint项目执行对msbuild的第二次调用-对解决方案调用/t:Package将不起作用,因为sharepoint目标尚未导入。
请让我知道这是否有效!