部署网站时的错误“one of its dependencies.试图加载格式不正确的程序。”解决方案。
Sever Error in '/' Application.Could not load file or assembly 'SresBase' or one of its dependencies.试图加载格式不正确的程序。
今天同事在部署网站时遇到了一个这样的错误,请我帮他看看。解决完后,我觉得这个问题还是比较常见的,所以记录在这里,供后来的读者方便地解决自己的相同或类似的问题。
问题截图如下:(当然这是在IIS里面直接访问网站才会出现的“错误详情页”,如果是远程访问,出于保护安全的需要,您需要设置您的WebConfig中的<customErrors mode="Off"/>)
错误信息提示:“未能成功加载'SresBase'文件或程序集,或其相关依赖项”。经过检查网站目录下的Bin目录发现“SresBase.dll”是有的。
但是为什么还是报错呢?我想文件是有的,“file or assembly”,那一定是程序集未能加载成功。也就是说程序集加载失败。怎么本机可以运行但是程序集加载失败呢?
我立马想到了,我一再强调的一个问题:“服务器一般是64位的,生成你的项目时必须注意你的目标平台架构为:‘AnyCpu’”。由于这个dll是另外一个同事单独写给我们的,我让这位同事检查这个dll的“生成目标平台”——果然!生成目标平台上设置的是“X86”。
把目标平台设置成“AnyCpu”后,问题轻松解决了。项目(按Alt+Enter)属性中更改“目标平台”设置界面如下:
问题总结:说白了这就是个把只能在32位机上运行的程序集拿到64位机运行,出现的低级错误!如果您不小心也犯了这个错误,那么您可以看一下您的所有项目属性里面“目标平台”和您的部署网站的IIS环境是否相同的。或者为了避免再有类似的麻烦,您可以将您平时所有项目的目标平台都设置成“Any Cpu”。