ODP.NET 11.2.04和12.1.0.2并排

时间:2015-04-13 14:20:55

标签: oracle visual-studio-2012 oracle11g odp.net

我们的产品使用ODP.NET 11g(具体为11.2.0.4)。我们想要升级到Oracle 12c但仍想支持以前的版本(带有ODP.NET 11g的版本)。我们有几个使用Oracle.DataAccess.dll的程序集。在visual studio中引用这些项目时,“Specific Version”设置被设置为false。

在开发人员计算机上,安装Oracle Client 12C时,会拾取最新的Oracle.dataaccess.dll文件。这是因为随Oracle 12c客户端安装的发布者策略。我在visual studio中为各个项目验证了oracle.dataaccess,dll的路径,并显示了ODP.NET 12c客户端的路径。无需更改代码即可无缝工作。

现在我们在构建机器上完成这项工作时遇到了问题。构建机器必须同时构建11g版本以及我们产品的12c版本。

我们已在构建计算机上安装了Oracle客户端11.2.0.4。 我们现在已在构建机器上安装了Oracle客户端12c。 当我在visual studio中检查引用时,更新oracle.dataaccess.dll路径以从odp.net 12c中选择。

以下是我处理此问题的计划。当我想构建11g版本时

  1. 从GAC中删除12c相关的策略文件和oracle.dataaccess dll。
  2. 从PATH变量中删除Oracleclient 12c路径。该路径已包含OracleClient 11g路径。删除12c路径会使路径变量仅包含Oracle客户端11路径。 我会反过来(从GAC卸载11g相关的dll并安装12c dll并添加12c Path到Path环境变量)
  3. 但是在按照步骤1,2构建11g版本之后,我仍然看到visual studio中的引用指向12c版本。我错过了一些东西还是我完全走错了路?

1 个答案:

答案 0 :(得分:1)

设置"特定版本"假是不够的。

在你的* .csproj中,resp。 * .vbproj编辑您对ODP.NET的引用,如下所示:

<Reference Include="Oracle.DataAccess">
  <SpecificVersion>False</SpecificVersion>
  <Private>False</Private>
</Reference>

不要忘记删除HintPath元素