替换DLL兼容不同版本的ODP.NET的“另类”方法

    替换DLL兼容不同版本的ODP.NET的“另类”方法

 

    用.NET开发软件,如果使用了ODP.NET,就要针对不同的Oracle客户端版本,引用对应的ODP.NET进行编译,对于版本管理来说,造成了一定的麻烦。这一话题,详见之前的日志http://www.cnblogs.com/ols/archive/2011/05/27/2059640.html#commentform

    除了期待Oracle早日推出支持所有Oracle客户端的ODP.NET版本,还有一个另类的方法,可以实现一次编译支持多个Oracle客户端的需求。

 

    在开发环境中,选择任一ODP.NET,编译工程文件。

 

    在部署(运行)环境中:

    1. 创建一个文件夹,比如“C:\TMP”,将Oracle.Dataaccess.dll复制到该文件夹中。比如部署环境中的oralce client是9i,就把9.2.0.700版本的Oracle.Dataaccess.dll复制过来,依此类推。

    2. 添加一个环境变量“DEVPATH”,值为“C:\TMP”

    3. 打开C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config文件,将<runtime/>替换为

<runtime>

  <developmentMode developerInstallation="true"/>

</runtime>

 

    这种方法,是微软为了便于在开发过程中测试DLL而提供的机制,不推荐在生产环境中使用。详细介绍参见:http://blogs.msdn.com/b/junfeng/archive/2005/12/13/503059.aspx。ODP.NET 9,10,11的 name, culture, publicKeyToken是相同的,所以可以使用这种方法。

 

    修改machine.config文件,会产生一些副作用,比如其他基于.NET的程序运行异常。可以只修改exe配置文件中的<runtime/>,而非全局配置文件,避免影响其他程序。

posted @ 2011-08-17 17:17  ols  阅读(600)  评论(2编辑  收藏  举报