1

我對MSBuild(掃描C#代碼)的SonarQube掃描儀有奇怪的錯誤。用於MSBuild的SonarQube掃描儀搜索錯誤彙編的類型

當運行在我的項目的工具,我收到此錯誤:

"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) 

請注意,我能夠創建一個最小的「攝製」項目演示此錯誤(發現here)。

很難說出爲什麼運行MSBuild會嘗試在該程序集下找到名爲「UnityEngine.UI.Selectable」的類型(此類型存在,但位於不同的程序集中)。

我正在掃描的.sln文件包含2個項目(一個引用另一個)。

我如何知道這裏發生了什麼?以及這是否是掃描儀中的錯誤或者我如何使用該工具?

+0

可以肯定的是:如果在Visual Studio中編譯沒有錯誤? –

+0

如果在VS或MSBuild中建造(沒有聲吶),沒有錯誤 –

+0

有沒有想過這裏發生了什麼或找到解決方案/解決方法?我在Visual Studio 2015中遇到了與代碼分析相同的問題。 – Tallek

回答

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的bug,但仍然很煩人(而且很奇怪!)

我相信VSTU(Visual Studio Tools for Unity)完成了這個程序集的處理,我還聯繫了該項目的開發人員之一 - Jb Evain,目前正在等待修復)。