| 物品 | 价值 |
|---|---|
| 规则 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>