CSharp - C# Log4Net错误:"无法加载文件或者程序集'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null'或者它的某个依赖项"

我尝试运行trialling aapi提供的MVC示例时,出现以下错误:

[StructureMapConfigurationException : StructureMap configuration failures : Error : 170 Source : Registry : StructureMap.Configuration.DSL.Registry , StructureMap, Version= 2.6.3.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223 Unable to find the exported Type's in assembly Groupdocs.Web.UI.Comparison, Version=2.0.5205.21794, Culture=neutral, PublicKeyToken=c9073b8a6a9c78c8. 程序集的一个或多个依赖项可能丢失。

could not load file or assembly'log4net, Version= 1.2.10.0, Culture=neutral, PublicKeyToken=null'or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT : 0x80131044) System.IO.FileLoadException : could not load file or assembly'log4net, Version= 1.2.10.0, Culture=neutral, PublicKeyToken=null'or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT : 0x80131044) File name : 'log4net, Version= 1.2.10.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes) at System.Reflection.RuntimeAssembly.GetExportedTypes() at StructureMap.Graph.TypePool . < > c__DisplayClass2. b__0(Assembly assembly )

我检查过GAC没有log4net的引用。

时间:

错误是:"A strongly-named assembly is required(需要一个强名称的程序集)"

你应该向使用的log4net添加一个strong named(强名称)密钥,或者从你的应用程序中删除强名称密钥。

有一个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。

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


<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net,


 Version=1.2.10.0, Culture=neutral, PublicKeyToken=1B44E1D426115821"/>



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

...