我正在追赶最近刚刚出现的程序集加载/绑定错误。在我的调查过程中,我发现了一个令人困惑的矛盾(假设我正确地解析了融合日志)。
我的应用程序在启动状态下抛出的异常:
{“无法加载文件或程序集'Microsoft.Practices.CompositeUI,Version = 1.0.51205.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)“:”Microsoft.Practices.CompositeUI,Version = 1.0.51205.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35“}
我最近做的一些项目更改不应该要求强名称程序集“Microsoft.Practices.CompositeUI”。在确认我的所有解决方案项目确实引用了未签名的程序集之后,我启动了dependency browser以确保我没有遗漏任何内容。一切都检查出来,我确认我没有对旧组件的任何“旧”引用。当然,我也清理并重建了我的项目。
然后我进一步研究并启动了融合日志查看器(Fuslogvw.exe)并将其配置为显示绑定错误。我查看了日志并发现了绑定错误。详细日志是混乱开始的地方;它将“调用程序集”列为一个程序集,它对缺少的程序集没有任何绑定(我可以确定)。啊,这很难解释。这是日志:
*装配活页夹日志条目(11/15/2010 @ 7:00:18 PM)*
操作失败。
绑定结果:hr = 0x80131040。没有可用的描述。
程序集管理器从以下位置加载:C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dll 在可执行文件C:\ Program Files \ PMT \ Office App \ 1.1.1.7 \ OfficeApp.exe
下运行---详细的错误日志如下。
===预绑定状态信息===
日志:用户= PMD \ sklett
日志:DisplayName = Microsoft.Practices.CompositeUI,Version = 1.0.51205.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 (完全指定的)
日志:Appbase = file:/// C:/ Program Files / PMT / Office App / 1.1.1.7 /
日志:初始PrivatePath = NULL
日志:动态基础=空白
日志:缓存基数= NULL
日志:AppName = OfficeApp.exe
调用程序集:Microsoft.Practices.EnterpriseLibrary.Common,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。
===
日志:此绑定在默认加载上下文中启动。
日志:使用应用程序配置文件:C:\ Program Files \ PMT \ Office App \ 1.1.1.7 \ OfficeApp.exe.config
日志:使用C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ config \ machine.config中的计算机配置文件。
日志:政策后参考:Microsoft.Practices.CompositeUI,Version = 1.0.51205.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35
日志:GAC查询失败。
日志:尝试下载新的URL文件:/// C:/ Program Files / PMT / Office App / 1.1.1.7 / Microsoft.Practices.CompositeUI.DLL。
日志:程序集下载成功。尝试设置文件:C:\ Program Files \ PMT \ Office App \ 1.1.1.7 \ Microsoft.Practices.CompositeUI.dll
日志:进入源自源设置阶段。
日志:程序集名称为:Microsoft.Practices.CompositeUI,Version = 1.0.51205.0,Culture = neutral,PublicKeyToken = null
警告:比较程序集名称导致不匹配:PUBLIC KEY TOKEN
错误:程序集引用与找到的程序集定义不匹配。
错误:无法完成装配设置(hr = 0x80131040)。探测终止。
现在,调用程序集“Microsoft.Practices.EnterpriseLibrary.Common”没有任何列出(通过依赖关系浏览器)依赖于“Microsoft.Practices.CompositeUI”。不仅如此,它不应该有任何。
融合日志阻止了我的追踪,融合日志导致了CONfusion! ; 0)希望我为一些聪明的专家提供了足够的信息,以便让我了解我所缺少的内容。
答案 0 :(得分:1)
我不确定答案是否合适或是否有其他评论,如果我选错了,请原谅。 ; 0)
好消息是重启后(实际断电)问题就消失了。我不知道为什么或为什么这样解决了它,我在研究这个问题时非常细致,但果然重启使它消失了!
感谢JeffN825坚持并提供帮助,我投了一些你的意见。