Log4Net出错:"无法加载文件或程序集' log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = null'或其中一个依赖"

时间:2014-06-06 09:45:10

标签: c# asp.net asp.net-mvc asp.net-mvc-4 log4net

当尝试运行供应商提供的用于试用API的MVC示例时,我收到以下错误:

  

[StructureMapConfigurationException:StructureMap配置   失败:错误:170来源:注册表:   StructureMap.Configuration.DSL.Registry,StructureMap,   Version = 2.6.3.0,Culture = neutral,PublicKeyToken = e60ad81abae3c223   无法在装配中找到导出的类型   Groupdocs.Web.UI.Comparison,Version = 2.0.5205.21794,Culture = neutral,   公钥= c9073b8a6a9c78c8。一个或多个组件   依赖关系可能会丢失。

     

无法加载文件或程序集'log4net,Version = 1.2.10.0,   Culture = neutral,PublicKeyToken = null'或其依赖项之一。一个   强名命的装配是必需的。 (HRESULT的例外情况:   0x80131044)System.IO.FileLoadException:无法加载文件或   assembly'log4net,Version = 1.2.10.0,Culture = neutral,   PublicKeyToken = null'或其依赖项之一。一个有名的   装配是必需的。 (来自HRESULT的异常:0x80131044)文件名:   'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = null'
  在System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly   assembly,ObjectHandleOnStack retTypes)at   System.Reflection.RuntimeAssembly.GetExportedTypes()at   StructureMap.Graph.TypePool<> c__DisplayClass2< .ctor> b__0(大会   组件)

似乎与Log4net特别相关,但我得到了项目和版本(1.2.10)的正确参考,有趣的是当我从另一台机器上尝试相同的项目时,它的工作方式不确定实际问题是什么。 我检查了GAC,没有log4net引用。

3 个答案:

答案 0 :(得分:3)

错误说:“需要强名称的程序集

我认为您应该为您使用的 log4net 添加强名称密钥,或者从您的应用程序中删除强名称密钥。

答案 1 :(得分:3)

在该行的某处必须有一个DLL,它引用了旧版本的log4net。您无法想象我们在项目中经常遇到这些类似问题的频率。解决方案只是找到依赖于log4net的所有项目并升级其版本。最新版本的log4net是1.2.13。您的应用中某处必须有一个DLL,它仍然依赖于您的情况1.2.10中的旧版本。 update-package -Id log4net

原始而又方便的解决方案:

1 - 构建整个解决方案并确保项目成功编译和构建。

2 - 搜索解决方案文件夹(在Visual Studio中右键单击解决方案并在“文件资源管理器中打开文件夹”)以查找log4net.dll的所有实例

3 - 在您的情况下,您很可能会在项目bin文件夹中看到相同DLL的不同版本。比较这些DLL将导致您使用与解决方案的其余部分不同的DLL。

答案 2 :(得分:1)

在您配置中,您没有指定公钥标记,请检查您的配置是否包含:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net,
                            Version=1.2.10.0, Culture=neutral, PublicKeyToken=1B44E1D426115821"/>

这将以强名称加载log4net程序集。

相关问题