【问题标题】:Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=5.0.0.0 in Azure Functions无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本=5.0.0.0
【发布时间】: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。

标签: asp.net-core .net-core azure-functions .net-5


【解决方案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.

      【讨论】:

        猜你喜欢
        • 2021-06-26
        • 1970-01-01
        • 2021-03-06
        • 1970-01-01
        • 1970-01-01
        • 2023-02-04
        • 2020-07-01
        • 2021-11-18
        • 2017-07-25
        相关资源
        最近更新 更多