无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0

Posted

技术标签:

【中文标题】无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0【英文标题】:Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=5.0.0.0 in Azure Functions 【发布时间】:2021-02-24 19:12:39 【问题描述】:

我有一个 API 和一个单独的 Azure Functions 应用。我将我的 API 应用程序升级到 .NET 5 并且运行良好。在 API 应用程序的解决方案中,我有在 Azure Functions 应用程序中引用的类库项目。这些类库是netstandard2.1 项目。

自从这次更新(在此期间我还将所有 NuGet 包更新到最新版本)以来,我的 Azure Functions 应用程序停止工作。我收到以下错误:

无法加载文件或程序集 'Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0, 文化=中性,PublicKeyToken=adb9793829ddae60'。系统无法 找到指定的文件。值不能为空。 (参数“提供者”)

我注意到涉及Microsoft.Extensions.* 软件包的重大更改,他们的建议是直接安装导致问题的软件包。所以我手动将Microsoft.Extensions.Configuration.Abstractions 添加到我的Azure Functions 中——在它作为Microsoft.Extensions.Configuration 包的依赖项安装之前。以下是有关此的信息: https://github.com/dotnet/aspnetcore/issues/21033

问题仍然存在。我什至尝试在 API 和 Functions 应用程序中降级 Microsoft.Extensions.Configuration,但仍然遇到同样的错误。

知道如何解决这个问题吗?

【问题讨论】:

对我来说,将 Microsoft.Extensions.* NuGet 包降级到版本 3.1.10 可以解决此问题,因此我认为您正在解决问题,因为 Microsoft.Extensions 重构是问题所在。我必须进行干净的构建,并且我必须退出 VS 并重新启动它。 遇到了同样的问题。这里是官方文档中的参考docs.microsoft.com/en-us/dotnet/core/compatibility/…。 该页面上的修复(手动引用 Microsoft.Extensions.Configuration.Abstractions)对我不起作用。 Azure Function 部署可能是某种特定问题? @ChrisRae 你是对的!将Microsoft.Extensions.* 降级为3.1.10 确实可以解决此问题。它以前对我不起作用,因为我只降级了Microsoft.Extensions.Configuration 而不是Microsoft.Extensions.DependencyInjection。显然,有共享库,所以所有Microsoft.Extensions.* 都必须降级。谢谢! @GaryChan 正如@ChrisRae 提到的,安装Microsoft.Extensions.Configuration.Abstractions 也不适合我!唯一的解决方案似乎是在所有 Microsoft.Extensions.* 包上回到版本 3.1.10 【参考方案1】:

山姆的评论应该被接受为正确答案。我尝试将Microsoft.Extensions*(在我的情况下为Microsoft.Extensions.Logging.Console)从5.0.0 降级为3.1.0,然后错误就消失了。 太棒了!

【讨论】:

如果您使用的是实体框架,也是如此。将其从版本5.0.9 降级到版本3.1.18。有同样的问题,但在 Microsoft.EntityFrameworkCore* 包中发现了错误。【参考方案2】:

作为参考,GitHub link 准确解释了发生这种情况的原因。

到目前为止,您要么追踪引用的确切版本,要么将所有内容降级到最新的 v3 版本。

简而言之,Azure Functions SDK 已经在内存中加载了一些依赖项,因此您的库无法使用相同库的较新版本。

【讨论】:

感谢您的链接。准确描述了问题并修复!【参考方案3】:

正如@binaryDi 在他们的回答中提到的,您需要降级引用Microsoft.Extensions.Configuration.Abstractions 版本5 的软件包。

这可能有点麻烦,因为它不会告诉您哪些包实际上引用了 Microsoft.Extensions.Configuration.Abstractions 包/命名空间。

对我来说,我必须将 Microsoft.Extensions.Caching.MemoryMicrosoft.EntityFrameworkCore.SqlServer 更新到 5 之前的版本。任何引用 dotnet 5 的东西都应该降级以运行 Azure Function。

【讨论】:

【参考方案4】:

如果您从 .NET Core 3.1 升级到 .NET 6 并收到此错误,则需要将 Azure 函数版本更改为 v4 并修复此错误。

【讨论】:

谢谢!为我节省了很多时间。【参考方案5】:

就我而言,原因是Microsoft.EntityFrameworkCore 版本5.0.2

我将其降级为版本3.1.18

(其他相关包,如Microsoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Tools也应降级为3.1.18

【讨论】:

【参考方案6】:

我在撰写本文时使用最新版本Npgsql.EntityFrameworkCore.PostgreSQL5.0.7)时遇到此错误。我不得不降级到3.1.11,因为当前版本依赖于5.0.0.0 版本 Microsoft.Extensions.Configuration.Abstractions.

【讨论】:

以上是关于无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Python 中加载共享对象文件 [重复]

无法在引用类库的 azure 函数中加载文件或程序集“System.Data.Entity 4.0.0.0”

无法使用表存储在 Azure 云工作者角色中加载文件或程序集 Microsoft.Data.OData 版本 = 5.2.0.0 错误

在 Azure ML 上的 jupyter notebook 中加载 csv 并设置参数

如何在functions.php(wordpress)中加载引导脚本和样式?

NextJs App 在 Azure Web App 中部署时未在 nextjs 公用文件夹中加载图像