无法在 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.Memory
和 Microsoft.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.Design
、Microsoft.EntityFrameworkCore.SqlServer
、Microsoft.EntityFrameworkCore.Tools
也应降级为3.1.18
。
【讨论】:
【参考方案6】:我在撰写本文时使用最新版本Npgsql.EntityFrameworkCore.PostgreSQL
(5.0.7
)时遇到此错误。我不得不降级到3.1.11
,因为当前版本依赖于5.0.0.0
版本
Microsoft.Extensions.Configuration.Abstractions
.
【讨论】:
以上是关于无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章
无法在引用类库的 azure 函数中加载文件或程序集“System.Data.Entity 4.0.0.0”
无法使用表存储在 Azure 云工作者角色中加载文件或程序集 Microsoft.Data.OData 版本 = 5.2.0.0 错误
在 Azure ML 上的 jupyter notebook 中加载 csv 并设置参数