【问题标题】:Could not load file or assembly Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0无法加载文件或程序集 Microsoft.Extensions.DependencyInjection.Abstractions,版本 = 5.0.0.0
【发布时间】:2021-03-06 10:08:05
【问题描述】:

在我的 azure 函数应用项目中,我收到一个未找到程序集的运行时错误 Microsoft.Extensions.DependencyInjection.Abstractions,版本 = 5.0.0.0。但是,该程序集包含在我从 NuGet 安装的多个包中。

Visual Studio:2019 目标框架:netcoreapp3.1 Azure Functions 版本:v3

包含 Microsoft.Extensions.DependencyInjection.Abstractions (5.0.0) 的已安装包:

  • Microsoft.Extensions.Http (5.0.0)
  • Microsoft.Extensions.Logging (5.0.0)
  • Microsoft.Extensions.Logging.EventSource (5.0.0)

错误: 启动操作期间发生主机错误... 无法加载文件或程序集“Microsoft.Extensions.DependencyInjection.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。系统找不到指定的文件。

无效的修复尝试: 从 NuGet 安装了 Microsoft.Extensions.DependencyInjection.Abstractions (5.0.0),但错误仍然存​​在。

在遇到类似问题Microsoft.Extensions #2931StackOverflow question 之后,我在项目文件中添加了以下内容。

<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>

我还关注了article suggestion。安装 Microsoft.Azure.Functions.Extensions 后,错误仍然存​​在。

我也关注了another suggestion,并将以下内容添加到我的项目文件中。但是,错误仍然存​​在。

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> 
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" 
publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="5.0.0.0" 
newVersion="5.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>

我尝试了问题#401 of ASP.NET Core Announcements 中建议的解决方法:引用无法在我的应用程序中显式加载的程序集的包。但是,错误仍然存​​在。

使用 ILSpy,我发现我从 NuGet 安装的 Microsoft.Azure.Functions.Extensions 引用了 Microsoft.Extensions.DependencyInjection.Abstractions,版本 2.1.0.0。

【问题讨论】:

    标签: c# .net-core dependency-injection azure-functions


    【解决方案1】:

    Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0 - 看起来您指的是一些用于 .net 5 的父 nuget 包,这取决于此。在撰写本文时,Azure Function 尚不支持 .net 5(因此很可能从强制 v5 nuget 引用中看到此类问题,因为 Function 主机的工作方式与常规的 asp.net 核心有点不同应用程序)更新:现在支持。跟踪this 以备将来更新。因此,在需要时,请仅使用任何相关 nuget 的 3.1.x 最新版本(还不是 5),例如 Microsoft.Extensions.*Microsoft.AspNetCore.*

    注意理想情况下,除非您需要做一些特殊的事情,否则您不应该在 Function 中明确要求任何这些包。

    【讨论】:

    • 为了在本地运行我的 Azure Function 项目,我通过引用所有依赖 DLL 的旧版本并包含多个旧版本来解决缺少程序集 Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0 运行时错误本次大会。但是,在尝试部署到 Azure 时,我收到了来自 GitHub Workflow CI/CD 的错误:NU1605:检测到包降级要部署,我通过在项目文件中包含依赖于原始缺失程序集的通用版本的 pkgs 旧版本来解决。 github.com/dotnet/extensions/issues/3694#issuecomment-733779020
    • 你能从 csproj 文件中分享你的 nuget 参考列表吗?
    【解决方案2】:

    相关的StackOverflow question,链接到问题Azure/azure-functions-vs-build-sdk #472,最后指向问题Azure/azure-functions-host #6893. GitHub 用户@AartBluestoke,总结说:“这只能通过将 azure 函数升级到依赖于抽象的 5.x 行。”

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 2021-01-06
      • 2021-06-26
      • 2021-02-24
      • 2021-11-18
      • 2023-03-21
      相关资源
      最近更新 更多