Error: Cannot load file or assembly netstandard, Version=2.1.0.0

Error: Cannot load file or assembly netstandard, Version=2.1.0.0

我有一个 AzureFunctions 项目,我需要升级到 .NET 标准 2.1(从 2.0)我在解决方案中的所有其他项目都正确加载和编译,但是这个 AzureFunctions 项目抛出了这个错误:

错误 System.IO.FileNotFoundException:无法加载文件或程序集 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'。该系统找不到指定的文件。 文件名:'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'

我已经确认所有 nuget 包都已更新,还有什么可能?

谢谢!

我得到了同样的错误。

我认为它与 Microsoft.NET.Sdk.Functions 包无关,因为您需要该包(特别是 1.0.30-beta2 以便尝试 .net core 3 的预览)。

我认为这与 Microsoft.Extensions.Logging 有关。如果你创建一个新的 azure functions 项目,你会看到 Azure.WebJobs.Extensions.Storage 在其中使用 v2.1 的日志包。但是,如果您的项目本身使用最新的日志记录,那么它也会使用 v3.0。 但是在某个地方我不认为它真的想要并且它在尝试找到 v2.1 时失败了。

如果您的函数将 ILogger 作为参数,它会失败,更具体地表明它找不到该类型。我认为这都是因为最终它是一个预览,我现在似乎也无法让它工作。

有时您收到此错误是因为您引用了一个针对不兼容的 .Net 标准的 library/nuget 包。 示例:如果您创建以 .Net Core 2.2 为目标的项目并尝试添加以 .net standard 2.1 为目标的库,那么您将得到相同的错误,因为 .Net Core 2.2 与 .net standard 2.0 或更低版本兼容,因此您可以添加 package/library 目标为 .Net Standard 2.0 或更低版本。 请查看链接了解更多详情:

.Net Core and .Net Standard

.Net Standard Compatiblity Table

我遇到了同样的问题。我最终发现,将 Azure Functions 项目属性更改为目标 .NET Core 3.1 仍然保留 V2 上的 Azure Functions 版本。解决方案是编辑 CSPROJ 并将 AzureFunctionsVersion 从 v2 设置为 v3。

我的项目文件目标netcoreapp3.1 Microsoft.NET.Sdk.Functions 3.0.3 基于模板 给出了类似的错误。 删除 azure-functions-core-tools 并安装不同的版本为我解决了这个问题。

npm uninstall azure-functions-core-tools
npm install azure-functions-core-tools@3 --unsafe-perm true

对我来说,需要升级的是 Azure 上的函数应用程序配置。 我必须在设置中将运行时间设置为 3。 见图。