1

MSBuildのSonarQubeスキャナで奇妙なエラーが発生しました(C#コードのスキャン)。私のプロジェクトでツールを実行している場合MSBuildのSonarQubeスキャナが間違ったアセンブリの下で型を検索します

、私はこのエラーを取得しています:私はこのエラーを示し、最小限の「REPRO」プロジェクトを作成することができました

"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が使用されます。私は、元のバージョンにDLLを元に戻すと、すべてが正常に動作するhttps://forum.unity3d.com/threads/unityeditor-ui-dll-is-tampered-with-before-copying-to-library-unityassemblies.446053/

は私が作成したこのスレッドの詳細情報を参照してください。 SonarQubeのバグではありませんが、まだ厄介なことです(奇妙なことです)

このアセンブリの処理は、VSTU - Jb Evain、現在修正を待っています)。

関連する問題