无法加载文件或程序集 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'

我使用 NuGet 包管理器在我的项目中添加了 Log4Net,它显示我的系统上安装了版本 2.3。

这是我的配置条目:

  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

然后在此处引用此文件

  <log4net configSource="Log4Net.config" />
  <system.serviceModel>

但是当我运行这个网站的时候。显示以下异常。

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

我看到 bin 文件夹中存在 dll,但显示的是版本 1.2.13.0。

如何更改程序集版本?

您的解决方案中的某个项目或某些第 3 方 dll 似乎是使用不同版本的 log4net 构建的。您可以在所有项目中更新对 log4net 的引用(对于第 3 方 dll,这无济于事),或者您可以将程序集重定向设置添加到 web.config(app.config),它将重定向指定的 version/versions log4net 到新的。

将此部分放在您的 web.config (app.config) 配置元素下的任意位置

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="log4net"
                          publicKeyToken="1b44e1d426115821"
                          culture="neutral" />
            <bindingRedirect oldVersion="1.2.10.0"
                         newVersion="1.2.13.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

有关详细信息,请查看 documentation page on msdn