升级Azure Functions SDK时ExtensionsMetadataGenerator错误

时间:2019-06-07 16:36:59

标签: visual-studio-2017 azure-functions

我将我的azure函数sdk从1.0.14升级到1.0.28,并且出现了此构建错误:

The ExtensionsMetadataGenerator package was not imported correctly.

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

4 个答案:

答案 0 :(得分:4)

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

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

ExtensionsMetadataGenerator软件包未正确导入。

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

答案 1 :(得分:1)

根据几天前发布的1.0.28函数sdk,其中可能包含一些错误。

解决方法:

手动添加 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator nuget打包到您的项目中,它将很好地工作。

答案 2 :(得分:0)

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

例如,我有一个运行.NET 2.1的Web应用程序,我不得不将NuGet版本回滚到1.0.36,而下一个版本(3.0)仅适用于.NET 3及更高版本。完成此操作后,根本不需要Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator NuGet,我所有的错误都消失了。

答案 3 :(得分:0)

我正在使用 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\1.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\1.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? "C:\Users\me\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\1.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\1.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\1.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\1.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\1.2.0\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets

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

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