반응형
Microsoft Visual Studio Professional 2022 (64-bit) - Current 버전 17.12.3
StreamJsonRpc.RemoteInvocationException: 인수에 중복된 분석기 인스턴스가 포함되어 있습니다. (Parameter 'analyzers')
위치: StreamJsonRpc.JsonRpc.<InvokeCoreAsync>d__1561.MoveNext()
--- 예외가 throw된 이전 위치의 스택 추적 끝 ---
위치: System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
위치: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
위치: Microsoft.CodeAnalysis.Remote.BrokeredServiceConnection1.<TryInvokeAsync>d__181.MoveNext()
RPC server exception:
System.ArgumentException: 인수에 중복된 분석기 인스턴스가 포함되어 있습니다. (Parameter 'analyzers')
at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers.VerifyAnalyzersArgumentForStaticApis(ImmutableArray1 analyzers, Boolean allowDefaultOrEmpty)
at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers..ctor(Compilation compilation, ImmutableArray1 analyzers, CompilationWithAnalyzersOptions analysisOptions)
at Microsoft.CodeAnalysis.Remote.Diagnostics.DiagnosticComputer.GetDiagnosticsAsync(ImmutableArray1 projectAnalyzerIds, ImmutableArray1 hostAnalyzerIds, Boolean reportSuppressedDiagnostics, Boolean logPerformanceInfo, Boolean getTelemetryInfo, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Remote.Diagnostics.DiagnosticComputer.GetNormalPriorityDiagnosticsAsync(ImmutableArray1 projectAnalyzerIds, ImmutableArray1 hostAnalyzerIds, Boolean reportSuppressedDiagnostics, Boolean logPerformanceInfo, Boolean getTelemetryInfo, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Remote.RemoteDiagnosticAnalyzerService.<>c__DisplayClass3_0.<<CalculateDiagnosticsAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.CodeAnalysis.Remote.RemoteWorkspace.<>c__DisplayClass7_01.<<RunWithSolutionAsync>g__ProcessSolutionAsync|1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.CodeAnalysis.Remote.RemoteWorkspace.RunWithSolutionAsync[T](AssetProvider assetProvider, Checksum solutionChecksum, Boolean updatePrimaryBranch, Func2 implementation, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Remote.RemoteWorkspace.RunWithSolutionAsync[T](AssetProvider assetProvider, Checksum solutionChecksum, Boolean updatePrimaryBranch, Func2 implementation, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Remote.BrokeredServiceBase.RunWithSolutionAsync[T](Checksum solutionChecksum, Func2 implementation, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Remote.RemoteDiagnosticAnalyzerService.CalculateDiagnosticsAsync(Checksum solutionChecksum, DiagnosticArguments arguments, CancellationToken cancellationToken)
해당 오류는 Microsoft.CodeAnalysis.Diagnostics와 관련된 문제로, 중복된 분석기 인스턴스가 제공되어 Diagnostics API 호출 시 충돌이 발생했음을 나타낸다. 이 문제는 주로 Visual Studio 또는 Roslyn 기반 프로젝트에서 발생하며, 코드 분석이나 빌드 도중 중복된 분석기가 지정되었을 때 발생한다.
원인
- 중복된 분석기: 동일한 분석기가 두 번 이상 프로젝트 또는 솔루션에 로드된 경우 발생한다.
- 패키지 의존성 문제: 두 NuGet 패키지가 서로 다른 버전의 분석기를 참조하여 충돌이 발생할 수 있다.
- 잘못된 빌드 캐시: Visual Studio의 빌드 캐시나 프로젝트 설정이 잘못된 경우 중복된 분석기가 발생할 수 있다.
- 설정 파일 문제: 프로젝트 파일(.csproj)이나 Directory.Build.props/Directory.Build.targets에서 중복된 분석기가 추가되었을 가능성.
해결 방법
1. 중복된 분석기 제거
- .csproj 파일에서 추가된 분석기 리스트를 확인한다.
- 중복된 Analyzer가 추가되어 있는 경우 제거한다.
.csproj 예시:
<ItemGroup>
<!-- 중복된 Analyzer 확인 -->
<Analyzer Include="path_to_analyzer.dll" />
<Analyzer Include="path_to_analyzer.dll" /> <!-- 중복된 항목 제거 -->
</ItemGroup>
2. NuGet 패키지 확인 및 정리
- 프로젝트에서 사용 중인 NuGet 패키지가 동일한 Analyzer를 포함하고 있는지 확인한다.
- 중복된 패키지가 있다면 하나로 통일하거나, 상위 버전으로 업데이트한다.
NuGet 패키지 관리 명령:
dotnet list package
dotnet remove package <패키지 이름>
dotnet add package <패키지 이름> --version <버전>
3. 빌드 캐시 정리
- Visual Studio의 빌드 캐시가 문제라면 캐시를 정리하고 다시 빌드한다.
- Visual Studio 캐시 정리:
- 도구 > 옵션 > 텍스트 편집기 > C# > 고급 > 분석기 캐시 정리 옵션을 실행한다.
- CLI 명령어로 빌드 캐시 정리:
dotnet clean
dotnet build
4. Directory.Build.props 및 Directory.Build.targets 확인
- 솔루션의 루트 디렉터리에 Directory.Build.props 또는 Directory.Build.targets 파일이 있는 경우, 중복된 분석기가 추가되어 있는지 확인한다.
Directory.Build.props 예시:
<Project>
<ItemGroup>
<!-- 중복된 Analyzer 제거 -->
<Analyzer Include="path_to_analyzer.dll" />
</ItemGroup>
</Project>
5. Visual Studio 분석기 설정 초기화
- Visual Studio에서 분석기 설정을 초기화한다.
- 도구 > 옵션 > 텍스트 편집기 > C# > 고급 > 기본값 복원 클릭.
요약
- 원인: 중복된 분석기 인스턴스가 추가되어 Diagnostics API 호출 시 충돌.
- 해결 방법:
- .csproj 파일에서 중복된 Analyzer 항목 제거.
- NuGet 패키지를 확인하고 충돌 제거.
- 빌드 캐시 정리 후 다시 빌드.
- Visual Studio를 최신 상태로 업데이트.
- Directory.Build.props 또는 Directory.Build.targets에서 중복 확인.
이 방법으로도 문제가 해결되지 않는다면 Microsoft 공식 문서의 권장 사항을 참고하거나, 프로젝트 환경에 맞게 추가 조정을 진행해야 한다.
반응형
'IT개발 > 개발 일반' 카테고리의 다른 글
Devexpress, 필터에 -2147483647 같은 쓰레기 값이 쓰여질 때 (1) | 2024.11.26 |
---|---|
Devexpress GridView cell old value, new value 체크하기 (0) | 2024.11.25 |
pdb 파일로 디버깅하는 법 (0) | 2024.11.25 |
Visual Studio 확장 프로그램 - CodeMaid 사용하여 사용성 높이기 (1) | 2024.11.15 |
MSSQL, Job 스케줄러 T-SQL로 생성하기 (1) | 2024.11.15 |
댓글