无法加载程序集Microsoft.Extensions.Configuration.Abstractions 3.1.0.0,但我正在参考3.1.5.0

问题描述

这通常是一个非常简单的问题,因为错误很明显,但由于某种原因我不是这种情况。

基本上,我们有几个拆分项目,并且nuget软件包已安装在共享项目中,其余网站都引用了它们。相反,我们在web.config文件中引用它们,并在构建时将它们放在bin文件夹中。

在我当前的问题中,我们引用的是抽象3.1.5.0,但现在它抱怨它想要3.1.0.0

 <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.5.0" newVersion="3.1.5.0" />
  </dependentAssembly>

我尝试了以下方法

  1. 实际上安装了nuget软件包(v3.1.5),但收到相同的错误
  2. 在项目文件添加了以下内容 <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>

有趣的是,当我安装v3.1.0时,出现一个错误,说它正在寻找3.1.5。 除此项目外,其他项目也都可以正常工作

解决方法

格式错误的web.config导致了此问题。这可能是在合并期间发生的。

我有一个部分,在dependentAssembly标记内有2个引用,一旦我将它们分开,删除了bin和obj文件夹,我就使它再次工作。

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.5.1.0" newVersion="6.5.1.0"/>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31BF3856AD364E35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.ApplicationInsights" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-2.14.0.17971" newVersion="2.14.0.17971"/>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
  </dependentAssembly>