启用CodeRush后Visual Studio构建出现诊断分析器内部错误
问题详情
- 环境:Visual Studio 17.12.3 + CodeRush for VS 2022 24.2.3
- 症状:启用CodeRush执行构建时弹出错误提示:
Diagnostic analyzer runner is currently unavailable due to an internal error (with CodeRush) - 关联堆栈跟踪:
StreamJsonRpc.RemoteInvocationException: Argument contains duplicate analyzer instances. (Parameter 'analyzers') at StreamJsonRpc.JsonRpc.<InvokeCoreAsync>d__156`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.CodeAnalysis.Remote.BrokeredServiceConnection`1.<TryInvokeAsync>d__18`1.MoveNext() RPC server exception: System.ArgumentException: Argument contains duplicate analyzer instances. (Parameter 'analyzers') at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers.VerifyAnalyzersArgumentForStaticApis(ImmutableArray`1 analyzers, Boolean allowDefaultOrEmpty) at Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers..ctor(Compilation compilation, ImmutableArray`1 analyzers, CompilationWithAnalyzersOptions analysisOptions) at Microsoft.CodeAnalysis.Remote.Diagnostics.DiagnosticComputer.GetDiagnosticsAsync(ImmutableArray`1 projectAnalyzerIds, ImmutableArray`1 hostAnalyzerIds, Boolean reportSuppressedDiagnostics, Boolean logPerformanceInfo, Boolean getTelemetryInfo, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Remote.Diagnostics.DiagnosticComputer.GetNormalPriorityDiagnosticsAsync(ImmutableArray`1 projectAnalyzerIds, ImmutableArray`1 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_0`1.<<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, Func`2 implementation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Remote.RemoteWorkspace.RunWithSolutionAsync[T](AssetProvider assetProvider, Checksum solutionChecksum, Boolean updatePrimaryBranch, Func`2 implementation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Remote.BrokeredServiceBase.RunWithSolutionAsync[T](Checksum solutionChecksum, Func`2 implementation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Remote.RemoteDiagnosticAnalyzerService.CalculateDiagnosticsAsync(Checksum solutionChecksum, DiagnosticArguments arguments, CancellationToken cancellationToken)
- 备注:禁用CodeRush后错误消失,需保留CodeRush功能并解决问题。
解决方案
1. 重置CodeRush设置
- 打开Visual Studio,点击顶部菜单栏的
CodeRush->Settings - 在设置窗口右上角,点击齿轮图标,选择
Reset All Settings - 确认重置后重启Visual Studio,再次尝试构建操作
2. 更新CodeRush至最新版本
- 打开Visual Studio,依次点击
Extensions->Manage Extensions - 在
Installed标签页找到CodeRush,检查是否有可用更新 - 安装更新后重启Visual Studio,验证问题是否解决
3. 移除重复的分析器引用
- 打开项目的
.csproj文件,检查是否存在重复的分析器NuGet包引用(尤其是CodeRush相关的分析器),删除重复条目 - 或右键项目 ->
Properties->Code Analysis,查看启用的分析器列表,移除重复的CodeRush分析器项
4. 清理Visual Studio缓存
- 完全关闭Visual Studio
- 删除以下目录的缓存文件:
%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache%USERPROFILE%\AppData\Local\Temp\VisualStudioBuildTemp
- 重启Visual Studio后尝试构建
5. 修复Visual Studio安装
- 打开Visual Studio Installer,选择当前使用的VS版本,点击
Modify - 选择
Repair选项,等待修复完成后重启Visual Studio,再进行测试
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

