用于MSBuild的SonarQube扫描程序搜索错误装配的类型

时间:2016-12-10 21:39:35

标签: c# msbuild sonarqube sonarqube-scan sonarqube-msbuild-runner

我在使用SonarQube扫描仪进行MSBuild时遇到了一个奇怪的错误(扫描C#代码)。

在我的项目上运行该工具时,我收到此错误:

"D:\Repro\Buggy.sln" (Rebuild target) (1) ->
"D:\Repro\Buggy.Editor.csproj" (Rebuild target) (3) ->
(RunCodeAnalysis target) ->
  MSBUILD : error : CA0001 : Could not find type 'UnityEngine.UI.Selectable' in assembly 'UnityEditor.UI, Version=1.0.0.0, Culture=neutral'. [D:\Repro\Buggy.Editor.csproj]

    2 Warning(s)
    1 Error(s)

请注意,我能够创建一个演示此错误的最小“repro”项目(找到here)。

很难说为什么运行MSBuild会尝试在该程序集下查找名为“UnityEngine.UI.Selectable”的类型(此类型存在,但在不同的程序集中)。

我正在扫描的.sln文件包含2个项目(一个引用另一个)。

我怎样才能知道这里发生了什么?以及这是扫描仪中的错误还是我使用该工具的方式?

1 个答案:

答案 0 :(得分:1)

我终于能够找到导致此问题的原因。

使用最新的C#插件版本(5.5.1.522)运行,分析仍然失败并出现相同的错误。

我也试过从VS2015运行分析 - 失败并显示相同的错误消息。

深入挖掘 - 有问题的程序集UnityEditor.UI.dll最初引用了所需的UnityEngine.UI.dll,但不知何故被处理以去除该程序集引用。

这是失败的原因。执行分析时,"篡改"或使用修改后的DLL。

查看我刚创建的此主题的更多信息:https://forum.unity3d.com/threads/unityeditor-ui-dll-is-tampered-with-before-copying-to-library-unityassemblies.446053/

我将DLL还原为原始版本,一切正常。 所以,不是SonarQube的错误,但仍然很烦人(而且很奇怪!)

我相信VSTU(Visual Studio Tools for Unity)完成了对程序集的处理,我还联系了该项目的一个开发人员 - Jb Evain,目前正在等待修复。)