【问题标题】:Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'无法加载文件或程序集“log4net,版本=1.2.10.0,文化=中性,PublicKeyToken=1b44e1d426115821”
【发布时间】:2015-08-17 03:56:12
【问题描述】:

我使用 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>

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

无法加载文件或程序集'log4net,版本=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.IO.FileLoadException:无法加载文件或 程序集'log4net,版本=1.2.10.0,文化=中性, PublicKeyToken=1b44e1d426115821' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

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

如何更改程序集版本?

【问题讨论】:

    标签: asp.net wcf log4net


    【解决方案1】:

    您的解决方案中的一个项目或某些第 3 方 dll 似乎是使用不同版本的 log4net 构建的。您可以在所有项目中更新对 log4net 的引用(使用 3rd 方 dll,这将无济于事),或者您可以将程序集重定向设置添加到 web.config (app.config),这会将 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

    【讨论】:

    • 这似乎是正确的答案,但我设法通过将我的Log4Net 降级为1.2.10.0 来做到这一点,并且一切正常。现在我不能这样做,因为我已经将补丁交付生产。我仍在标记您的答案以供将来参考(供他人参考)
    • 警告 - 始终通过转到包管理器来更改/升级/降级任何 nuget 包的版本。这样,nuget 就能够在任何需要的地方进行必要的更改,包括项目系统。我是通过直接修改packages.config文件来做到的,付出了一整天的惨重代价。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    相关资源
    最近更新 更多