首页 > 开发遇到的问题 > Could not load file or assembly (Exception from HRESULT: 0×80131040)
2013五月23

Could not load file or assembly (Exception from HRESULT: 0×80131040)

编译出现这个错误:
Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0×80131040)

操作:使用微软企业库,修改了Microsoft.Practices.EnterpriseLibrary.Common.dll,Microsoft.Practices.EnterpriseLibrary.Data.dll
(一个知识点是修改了这种dll后,微软的强签名就没了,由PublicKeyToken=31bf3856ad364e35变成了PublicKeyToken=null)

问题引发场景:
新项目中引用了修改的企业库Common.dll,Data.dll,未改的企业库Caching.dll,问题就来了:
微软的企业库Caching.dll里面还是引用原来的带有强签名的Common.dll(可通过Reflector查看此引用),而我们在这个新项目中引用的是自己修改的Common.dll,在编译时造成Caching.dll找不到微软的Common.dll,从而引发上述错误。
解决方法:
1,修改Caching.dll,将其引用的Common.dll改为自已修改后的Common.dll
2,因本项目中没有用到Caching.dll的地方,去掉此Caching.dll,解决问题
3,因微软的Common.dll是强签名,可注册到GAC全局

注:
1,引用Common.dll的微软企业库还有
Microsoft.Practices.EnterpriseLibrary.Caching.Cryptography.dll
Microsoft.Practices.EnterpriseLibrary.Caching.Database.dll
Microsoft.Practices.EnterpriseLibrary.Caching.dll
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
2,一个被忽略的基本事实是:打包的dll如father.dll 里面引用了son.dll,那么在新项目中若引用father.dll,那么在bin下也要有son.dll的存在。

本文地址:http://enjoyasp.net/?p=2680 , 转载请保留.

本文的评论功能被关闭了.