AZFW0111:未引用 Azure Functions 工作进程包

物品 价值
规则 ID AZFW0111
Category Sdk
Severity Warning

原因

还原后,在项目的已解析包图中未找到 Microsoft.Azure.Functions.Worker.Core 程序集。

规则描述

Azure.Functions.Sdk 的早期版本将 Microsoft.Azure.Functions.Worker 添加为隐式直接包引用。 由于这是直接引用,NuGet 会将其固定为 SDK 提供的版本,并静默地将传递性依赖项(例如 OpenTelemetry 集成包)请求的更高版本降级。 版本不匹配在还原时未被报告出来,却导致了运行时故障,例如 System.MissingMethodException。

SDK 不再添加这种隐式引用。 而是,项目必须引用 worker 包——要么直接引用,要么通过某个依赖于它的包来引用——这样 NuGet 才能解析出依赖关系图所需的最高版本。 该目标在恢复后验证工作包是否存在,并在缺少工作包时发出警告。

如何修复

添加对 Microsoft.Azure.Functions.Worker 的引用(或依赖于它的包,例如 Microsoft.Azure.Functions.Worker.Grpc):

  <ItemGroup>
+   <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.52.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.1.0" />
  </ItemGroup>

何时应压制警告

只有在项目故意不生成可运行的 Azure Functions 应用(例如,被函数应用消耗的共享库)时,才应抑制此警告。 通过将 AZFW0111 添加到 NoWarn 来抑制它:

<PropertyGroup>
  <NoWarn>$(NoWarn);AZFW0111</NoWarn>
</PropertyGroup>