1

MSBuild (Scan C# code) 용 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 버그가 아니지만 여전히 성가신 (그리고 이상한!)

이 어셈블리의 처리는 VSTU (Visual Studio Tools for Unity)에 의해 믿어지고 그 프로젝트의 개발자 중 한 사람에게 연락을했습니다. - Jb Evain, 현재 수정을 기다리는 중입니다).

관련 문제