我们的产品使用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,2构建11g版本之后,我仍然看到visual studio中的引用指向12c版本。我错过了一些东西还是我完全走错了路?
答案 0 :(得分:1)
设置"特定版本"假是不够的。
在你的* .csproj中,resp。 * .vbproj编辑您对ODP.NET的引用,如下所示:
<Reference Include="Oracle.DataAccess">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
不要忘记删除HintPath
元素