升级 Azure Functions SDK 时出现 ExtensionsMetadataGenerator 错误

ExtensionsMetadataGenerator error when upgrading Azure Functions SDK

我将我的 azure 函数 sdk 从 1.0.14 升级到 1.0.28,我得到了这个构建错误:

The ExtensionsMetadataGenerator package was not imported correctly.

我找不到任何文档或解决方法。

根据前几天发布的1.0.28函数sdk,可能有一些bug。

解决方法:

手动添加 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator 将 nuget 包添加到您的项目中,它将运行良好。

开始使用 Visual Studio Function App 模板时出现此错误,该模板使用 Microsoft.NET.Sdk.Functions 1.0.31 并且是 .NET Core 2.0 应用程序。

Nuget 程序包管理器想要将 Microsoft.NET.Sdk.Functions 程序包更新到版本 3.0.2,它试图这样做,但应用程序仍然是 .NET Core 2,您收到错误消息:

The ExtensionsMetadataGenerator package was not imported correctly.

要解决此问题,请将应用程序更新到 .NET Core 3:

确保将 Microsoft.NET.Sdk.Functions NuGet 程序包更新到支持您应用的 .NET 版本的最新版本。

例如,我有一个 Web 应用程序 运行 .NET 2.1,我不得不将 NuGet 版本回滚到 1.0.36,而下一版本 (3.0) 只能在 .NET 3 及更高版本上运行。这样做之后,Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator 根本不需要 NuGet,我所有的错误都消失了。

我正在使用 microsoft.net.sdk.functions 1.0.38 并看到相同的消息,但在我的情况下,这是构建警告而不是错误。

我安装了建议的 NuGet 包和所需的版本。然而,我随后收到了 3 个警告:

The ExtensionsMetadataGenerator package was not imported correctly. Are you missing 'C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? "C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props" cannot be imported again. It was already imported at "C:\Users\me\.nuget\packages\microsoft.net.sdk.functions.0.38\build\Microsoft.NET.Sdk.Functions.props (56,3)". This is most likely a build authoring error. This subsequent import will be ignored. [D:\myproject.Web\myproject.Web.AzureFunctions\myproject.Web.AzureFunctions.csproj] "C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets" cannot be imported again. It was already imported at "C:\Users\me\.nuget\packages\microsoft.net.sdk.functions.0.38\build\Microsoft.NET.Sdk.Functions.targets (64,3)". This is most likely a build authoring error. This subsequent import will be ignored. [D:\myproject.Web\myproject.Web.AzureFunctions\myproject.Web.AzureFunctions.csproj]

更糟糕的是,我的项目无法构建 - 它在构建时冻结,无法取消。取消的唯一方法是提升 PowerShell:

stop-process -name "dotnet"

为了解决这个问题,我尝试卸载 NuGet 包,但这还不够,因为如果它在系统上,它似乎仍在使用(即使项目没有引用它?!?)。

有必要从包存储中实际删除包,即在

C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator

或者另一种方法是注释掉以下行:

<GenerateFunctionsExtensionsMetadata SourcePath="$(_FunctionsExtensionsDir)" OutputPath="$(_FunctionsExtensionsDir)"/>

发件人:

C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets

我不知道这样做是否安全,但它消除了警告消息。相反,我选择只删除 NuGet 包并接受原始警告。

看起来 microsoft.net.sdk.functions 包真是一团糟。