Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果DiagnosticanAnalyzer的初始化为空,GetAnalyzerDiagnosticsAsync将不返回任何内容_C#_Code Analysis_Roslyn - Fatal编程技术网

C# 如果DiagnosticanAnalyzer的初始化为空,GetAnalyzerDiagnosticsAsync将不返回任何内容

C# 如果DiagnosticanAnalyzer的初始化为空,GetAnalyzerDiagnosticsAsync将不返回任何内容,c#,code-analysis,roslyn,C#,Code Analysis,Roslyn,我正在编写一种方法,用于获取一个项目的所有诊断s,以及一组诊断分析仪的s: private static async Task<ImmutableArray<Diagnostic>> GetDiagnosticsAsync( Project project, ImmutableArray<DiagnosticAnalyzer> analyzers) { var compilation = await project.GetCompila

我正在编写一种方法,用于获取一个
项目的所有
诊断
s,以及一组
诊断分析仪的
s:

private static async Task<ImmutableArray<Diagnostic>> GetDiagnosticsAsync(
    Project project,
    ImmutableArray<DiagnosticAnalyzer> analyzers)
{
    var compilation = await project.GetCompilationAsync();
    var withAnalyzers = compilation.WithAnalyzers(analyzers);
    var diagnostics = await withAnalyzers.GetAnalyzerDiagnosticsAsync();

    return diagnostics;
}
但是,如果其中任何一个具有空实现

public override void Initialize(AnalysisContext context)
{
    // nothing here
}
然后
diagnostics.Count()==0

我是否误解了
GetAnalyzerDiagnosticsAsync()
DiagnosticanAnalyzers
的行为,因此这是正确的做法?或者这是罗斯林的一只虫子?还是我应该使用另一种方法?还是别的什么


我忍不住想这是Roslyn的一个错误(就我所知)。深入研究源代码并调试结果,发现差异出现在使用Analyzer进行编译时。_driver.DiagnosticQueue
-当它工作时,它具有所需的
计数
,但当问题发生时,它是
0

情节变厚了…

原来这是Roslyn的一个bug,现已修复:

public override void Initialize(AnalysisContext context)
{
    // nothing here
}