分析器 'Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer' 引发了 'System.NullReferenceException' 类型的异常

Analyzer 'Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer' threw an exception of type 'System.NullReferenceException'

我在构建 Azure 函数项目时收到此警告。堆栈跟踪中没有太多细节。任何人都可以帮我理解这个错误吗?

> CSC : warning AD0001: Analyzer
> 'Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer'
> threw an exception of type 'System.NullReferenceException' with
> message 'Object reference not set to an instance of an object.'.

如果有帮助,这里是堆栈跟踪:

> Severity  Code    Description Project File    Line    Suppression State   Detail
> Description Warning   AD0001  Analyzer
> 'Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer'
> threw an exception of type 'System.NullReferenceException' with
> message 'Object reference not set to an instance of an
> object.'. 
        1   Active  Analyzer
> 'Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer'
> threw the following exception: 'Exception occurred with following
> context: Compilation: 
> 
> System.NullReferenceException: Object reference not set to an instance
> of an object.    at
> Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.ArgumentAnalyzer.TryGetInputFromDurableContextCall(SemanticModel
> semanticModel, SyntaxNode definitionInput, SyntaxNode&
> inputFromContext)    at
> Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.ArgumentAnalyzer.TryGetDefinitionInputType(SemanticModel
> semanticModel, ActivityFunctionDefinition functionDefinition,
> ITypeSymbol& definitionInputType)    at
> Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.ArgumentAnalyzer.ReportProblems(CompilationAnalysisContext
> context, SemanticModel semanticModel, IEnumerable`1
> availableFunctions, IEnumerable`1 calledFunctions)    at
> Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers.FunctionAnalyzer.RegisterAnalyzers(CompilationAnalysisContext
> context)    at
> Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.<>c.<ExecuteCompilationActionsCore>b__46_1(ValueTuple`2
> data)    at
> Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock[TArg](DiagnosticAnalyzer
> analyzer, Action`1 analyze, TArg argument, Nullable`1 info)
> ----- '.

DurableTask Analyzer 是一种 Roslyn 分析器,可在使用 Durable Functions 时检查您的代码是否存在不一致,以帮助您防止常见错误。它现在是 DurableFunctions 扩展的一部分。

您使用的是最新版本的 Durable Functions,v2.2.1? 此版本包含最新版本的 DurableTask Analyzer v0.2.1 作为依赖项,其中似乎存在导致异常的错误。

您可以删除 Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers 依赖项作为避免出现此异常的变通方法,如下所示:

  • 转到存储 DurableTask 程序包的本地文件夹。对我来说这是:C:\Users\%User%\.nuget\packages\microsoft.azure.webjobs.extensions.durabletask.2.1
  • 打开 nuspec 文件并注释掉(或删除)Microsoft.Azure.WebJobs.Extensions.DurableTask.Analyzers 的两个依赖项、一个 .NETFramework4.6.1 的依赖项和一个 .NETStandard2.0.[=35 的依赖项=]
  • 保存 nuspec
  • 在您的 IDE 中,删除对 DurableTask 扩展的包引用。
  • 再次添加 DurableTask 扩展。由于该包仍在您的本地文件夹中,因此不应从 nuget.org 下载。它将加载扩展但现在不使用分析器。它很笨拙,但它确实有效。

顺便说一句,我得到了和你一样的错误。我会在 GitHub 检查问题,如果还没有完成,我会在那里添加一个新问题。

更新:GH issue 已创建。

我必须将最新的 DurableTask.Analyzers 包 (v0.3.0) 添加到我的项目中才能解决此问题。

目前 DurableTask 软件包 (v2.2.2) 仍然使用 DurableTask.Analyzers v0.2.3,它会在构建

时发出警告