2014-08-27 59 views
2

我刚刚在VS 2008中将3.5项目转换为Framework 4.5,该网站有两个引用的项目(让我们称之为Business和Reports)。移到.NET 4.5。 “错误

一切工作与在VS 2012的Web服务器的发展但是,当我把它在我的本地IIS *,我得到的

“无法加载文件或程序集‘报告’或它的一个依赖。试图加载一个不正确的格式的程序。:

我看到在bin目录中的报告的dll。我使用x86平台编译并回到AnyCPU,但它仍然无法工作。

(我没有设置应用程序池的.NET框架版本4.0。)

编辑:谁能帮我discipher下面的消息?我看到HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Fusion。但什么是“Fusion!EnableLog”?我什么都看不到。

警告:装配绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1. 注意:与程序集绑定失败日志记录相关的性能受损。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

+0

您是否尝试过使用DependencyWalker进行调查? – Raghu 2014-08-27 09:07:24

+0

打开解决方案并按下右键单击程序集(业务和报告)并打开属性。更改程序集的版本,如果它们是.net 3.5 – 2014-08-27 09:09:22

+0

我确实将它们更改为4.5 – user79284 2014-08-27 09:11:27

回答

1

可能有问题的DLL仅适用于32位(x86)版本。

重建您的程序,以x86构建为目标。

然后在IIS中,右键单击为应用程序提供服务的应用程序池,然后单击“高级设置”。从这里,将“启用32位应用程序”值设置为“真”,然后回收应用程序池并重新启动您的网站,并让我知道你是否仍然有错误。

如果您不知道您的网站正在使用哪个应用程序池,请在“网站”下单击您的网站,然后在“操作”窗格中选择“基本设置”选项。从这里您可以看到哪个应用程序池为您的应用程序提供服务,如果需要,您可以更改应用程序池。应用程序池是通过IIS中“连接”窗格上的“应用程序池”选项进行管理的。

我认为,如果您是从64位机器构建,那么选择“任何CPU”可能会导致64位构建,因此如果引用的DLL是针对x86构建的,那么这可能是您为什么选择正在收到错误消息。