上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射,则反射创建对象的dll必须放在web应用程序的bin目录里。
今天又遇到了一个类似的问题,mvc3的应用程序,发布到iis上时,报:”未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。“。
原因很简单,因为我发的时候,我项目中的oracle提供的asp.net访问oralcle数据库的这个 Oracle.DataAccess.dll的本地复制没有设置为true(在项目引用里找到该引用,右键属性里有这个”本地复制").
所有发布的时候,它不会自动复制到bin目录里。从而出现了s上述未能加载的错误。
好吧!既然这样,那我要么该项目中该引用属性,要么就直接把那个dll复制到发布在服务器上的bin目录里吧。
我复制进去后,问题又来了,还是暴未能加载一个引用项。后来一想我iis所在的服务器是64的,
而我的 odp.net是装的32.所以对应的 Oracle.DataAccess.dll也应该是32位的,这里涉及iis的配置了。
dll有了,32位的,系统是64位的。这个在iis里有一个设置如下如: