遇到的问题:
1.x86无法调用x64
2.调用ibatis.net的providers.config无法通过节点反射查找Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 dll
最近重装系统,直接使用vs2017,然后oracle客户端是x64位,以前总是装32位,然后正常使用,但是初次想直接使用64位,看其是否能够正常使用,然后遇到以上两个问题。
解决方法:
1.调整类库和web平台均为64位
2.调整IIS Express 为64位(工具 -> 选项 ->项目和解决方案 -> Web 项目 ,勾选“对网站和项目使用IIS Express 的 64 位版”)
3.因为是通过providers.config中的配置节点调用,故事采用系统反射的原理,无法找到dll,开始不知道原因,后再查看“飞蛾扑火”的博客才才知道,非常感谢。原博客地址:http://www.cnblogs.com/h20064528/archive/2012/12/27/2835845.html
其博客中写到:odp.net安装后,默认会在GAC中部署程序集GAC,如果你安装的是x86版本,GAC中的就是x86;如果你安装的x64版本,GAC中的就是AMD64版本。 于是查看GAC中是否有Oracle.DataAccess。发现没有,于是添加便解决问题。
查看GAC命令:在vs.net命名行窗口下,输入gacutil.exe /l Oracle.DataAccess
执行命令:
gacutil /i D:appadministratorproduct11.2.0dbhome_1ODP.NETin2.xOracle.DataAccess.dll
(注意:其中administrator根据自己文件夹名称修改)
通过解决此次问题后,对于后续dll无法调用,找到不程序集,或者x86,x64平台的问题有了相应的解决思路。记一笔,也感谢网络上的大神们。