当尝试运行供应商提供的用于试用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引用。
答案 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程序集。