如何解决无法在Azure函数中加载文件或程序集'Microsoft.Extensions.Configuration.Abstractions,Version = 5.0.0.0
我有一个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
作为Microsoft.Extensions.Configuration
程序包的依赖项进行安装之前,我手动将Microsoft.Extensions.Configuration
添加到了Azure函数中。这是关于此的信息:
https://github.com/dotnet/aspnetcore/issues/21033
问题仍然存在。我什至尝试在API和功能应用程序中降级{{1}},但仍然遇到相同的错误。
有什么办法解决这个问题吗?
解决方法
作为参考,这个 GitHub link 解释了为什么会发生这种情况。
到目前为止,您要么追踪引用的确切版本,要么将所有内容降级到最新的 v3 版本。
简而言之,Azure Functions SDK 已经在内存中加载了一些依赖项,因此您的库不能使用相同库的较新版本。
,正如@binaryDi 在他们的回答中提到的,您需要降级引用 Microsoft.Extensions.Configuration.Abstractions
版本 5 的软件包。
这可能有点麻烦,因为它不会告诉您哪些包实际上引用了 Microsoft.Extensions.Configuration.Abstractions
包/命名空间。
对我来说,我必须将 Microsoft.Extensions.Caching.Memory
和 Microsoft.EntityFrameworkCore.SqlServer
更新到 5 之前的版本。任何引用 dotnet 5 的内容都应该降级,以便 Azure Function 运行。
山姆的评论应被接受为正确答案。我尝试将Microsoft.Extensions*
(在我的情况下为Microsoft.Extensions.Logging.Console
)从5.0.0
降级到3.1.0
,错误消失了。
太棒了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。