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

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

[StructureMapConfigurationException:StructureMap配置失败:错误:170来源:注册表:StructureMap.Configuration.DSL.Registry,StructureMap,Version = 2.6.3.0,Culture = neutral,PublicKeyToken = e60ad81abae3c223无法在程序集Groupdocs.Web中找到导出的Type . UI.Comparison,Version = 2.0.5205.21794,Culture = neutral,PublicKeyToken = c9073b8a6a9c78c8 . 可能缺少一个或多个程序集的依赖项 . 无法加载文件或程序集'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一 . 需要一个强名称的程序集 . (来自HRESULT的异常:0x80131044)System.IO.FileLoadException:无法加载文件或程序集'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一 . 需要一个强名称的程序集 . (来自HRESULT的异常:0x80131044)文件名:System.Reflection.RuntimeAssembly.GetExportedTypes的System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly,ObjectHandleOnStack retTypes)的文件名:'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = null' ()在StructureMap.Graph.TypePool . <> c__DisplayClass2 . < . ctor> b__0(装配程序集)

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

回答(3)

3 years ago

错误说:“ A strongly-named assembly is required

我认为你应该为你使用的 log4net 添加一个强大的命名密钥,或者从你的应用程序中删除一个强大的命名密钥 .

3 years ago

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

Primitive Yet Handy Solution:

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

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

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

3 years ago

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

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

这将通过其强名称加载log4net程序集 .