Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容

背景:进行程序部署,客户机上原有oracle客户端的版本为2.113.1.0(如下简称113),而数据库、开发机和其余客户机上均采用的2.112.1.0(如下简称112)客户端,因此进行了替换。
卸载过程:实际上是推荐用oracle自带的deinstall脚本进行卸载,不过因为客户机环境问题(他当时安装的简版,啥都没有),采用了手动方式。
停用了相关oracle服务;
清理注册表,主要是HKEY_LOCAL_MACHINE\SOFTWARE中的oracle项目,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中的服务项,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application中的日志项;删除客户端物理文件x:\app\...下的对应主目录,x:\Program Files\Oracle\... 下inventory内容;

清理系统变量中path里涉及的主目录信息。html

这样,物理文件就差很少ok了,以后安装了指定版本的客户端,配了监听。数据库

问题:程序运行时,使用的是Oracle.DataAccess.Client进行数据访问时,报错Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容。
解决过程:
查看了本机的oracle主目录下...\ODP.NET\bin\2.x\中的Oracle.DataAccess.dll版本同服务器上的版本相同,确认dll无误;
确认开发机上引用的dll版本,与客户机相同,未设定指定版本,确认引用正常;
查看x:\Windows\assembly目录下的oracle相关dll,发现都有两份,一份是113的,一份是112的。删除全部113的dll,保留112版,问题解决。
推测:
开发机上的引用地址,指向的GAC中的对应dll,客户机程序启动,也是从GAC中获取,首先得到了113版,而后进行加载,致使版本不一样。
关于gac,参考 http://www.cnblogs.com/chenlulouis/archive/2010/06/30/1768176.html