当尝试运行供应商提供的用于试用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 回答
错误说:“ A strongly-named assembly is required ”
我认为你应该为你使用的 log4net 添加一个强大的命名密钥,或者从你的应用程序中删除一个强大的命名密钥 .
沿线的某处必须有一个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 .
在您配置中,您没有指定公钥标记,请检查您的配置是否包含:
这将通过其强名称加载log4net程序集 .