ASP.NET项目中的Could not load file or assembly问题

今天遇到一个奇怪问题,有一个ASP.NET项目,访问时总是显示不能加载EF4.1的错误(项目中对EF的引用都已升级至EF5.0):

Could not load file or assembly 'EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”未能加载的原因。

WRN: Assembly binding logging is turned OFF.

To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure logging.

To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

问题怪就怪在我找遍整个项目的代码,也没找到哪个地方引用了Entity Framework 4.1.0.0。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

后来,注意到错误信息中的提示——“dTo enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1”,想到是不是可以通过日志找出究竟哪个地方引用了EF 4.1。进入注册表一看,有HKLM\Software\Microsoft\Fusion,但没有HKLM\Software\Microsoft\Fusion!EnableLog。不知该如何下手?

在网上搜了搜,在stackoverflow上发现How to enable assembly bind failure logging (Fusion) in .NET的回答:

Add the following values to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Add:

DWORD ForceLog set value to 1

DWORD LogFailures set value to 1

DWORD LogResourceBinds set value to 1

String LogPath set value to folder for logs ie) C:\FusionLog\

于是在注册表进行了这样的设置:

然后再访问,在页面显示的错误信息中包含了下面一行:

Calling assembly : Devtalk.EF.CodeFirst, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

在C:\FusionLog\Default\64baea7c中也可以找到对应的日志文件EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.HTM

于是,真相大白——这个项目中引用了Devtalk.EF.CodeFirst.dll,而它引用了Entity Framework 4.1,从而引起这个问题。

更新:

如果不想生成日志文件,只想在错误信息中显示“Calling assembly”,只需要在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion中将LogResourceBinds的值设置为1(DWORD(32-bit))。

注:修改注册表之后需要重启IIS才能生效

时间: 2024-11-02 16:17:14

ASP.NET项目中的Could not load file or assembly问题的相关文章

asp.net项目中怎样实现图片和文档的备份机制?

问题描述 asp.net项目中怎样实现图片和文档的备份机制? 就一个项目的帮助文档,有图片和使用文档说明,以前不小心删过一个组件,现在所有的图片和部分文字都没有了,现在要做一个备份机制.怎样实现?一点头绪都没...

ASP老项目中如何搜索一个文件在哪些地方被引用

ASP老项目中,我们经常会遇到要搜索一个文件在哪些地方被引用,从而修改那些引用它的文件.由于asp没有搜索功能,因此我们需要借助Visual Studio来解决. 我们可以利用VS2008来打开一个网站,打开我们的asp项目的主目录. 然后,在 Edit->Find and Replace->Find in Files会打开一个搜索对话框:Find what: 填写你需要搜索的asp文件名Look in :   选择Entire Solution

Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.En

错误详细信息: Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 系统找不到指定的文件. 今天打开之前一个vs2005的项目,报出上面的错误,这个啥

完美解决Could not load file or assembly AjaxPro.2 or one of its dependencies. 拒绝访问。[原创]_实用技巧

Server Error in '/' Application.  -------------------------------------------------------------------------------- Could not load file or assembly 'AjaxPro.2' or one of its dependencies. 拒绝访问.  Description: An unhandled exception occurred during the 

在asp.net项目中调试出现了这样的问题 dbher和sa‘登录失败’,请哪位高手跟我看看

问题描述 解决方案 解决方案二:配置文件的数据库链接改用这个试试,server=127.0.0.1;database=BZT_DBF;uid=as;pwd=123;.

VS2012连接sql2008的问题-Could not load file or assembly 'Microsoft.SqlServer.Manageme

问题描述 在用VS2012连接SQL2008生成实体模型的时候出现Couldnotloadfileorassembly'Microsoft.SqlServer.Management.Sdk.Sfc,Version=11.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91'oroneofitsdependencies.Thesystemcannotfindthefilespecified.但是我用VS2010连接SQL2008就没问题. 解决

Could not load file or assembly 'log4net

问题描述 有哪位高人可以指点一下以下的错误信息吗:ConfigurationErrorDescription:Anerroroccurredduringtheprocessingofaconfigurationfilerequiredtoservicethisrequest.Pleasereviewthespecificerrordetailsbelowandmodifyyourconfigurationfileappropriately.ParserErrorMessage:Couldnotl

『100分』急求“Could not load file or assembly 'Copy of B_Function ' or one of its dependencies...”的解决办法,解决

问题描述 RT其中B_Function是引用的一个dll文件,生成时发生的错误.整个错误是这样的错误3Couldnotloadfileorassembly'CopyofB_Function'oroneofitsdependencies.Thelocatedassembly'smanifestdefinitiondoesnotmatchtheassemblyreference.(ExceptionfromHRESULT:0x80131040)请教各位!(上个帖子忘给分了) 解决方案 解决方案二:d

Could not load file or assembly 'CrystalDecisions.ReportAppServer

问题描述 Couldnotloadfileorassembly'CrystalDecisions.ReportAppServer.CommLayer,Version=10.5.3700.0,Culture=neutral,PublicKeyToken=692fbea5521e1304'oroneofitsdependencies.系统找不到指定的文件.这报表的是不是要在服务器装报表控件吗在我电脑没问题,到客户那就出问题了,求高手指点 解决方案 解决方案二:对的,要在server端安装