2013-10-31 133 views
1

我写了一个.NET 4 NT服务,它连接到Oracle 11g数据库,现在我想部署。如何控制ODP.NET的多个版本

目标机器安装了Oracle驱动程序,但仅适用于ODP v2。 (我假设ODP.NET \ Bin中只有一个2.x文件夹)

没有升级路径;公司的软件包不包括我正在寻找的东西,而且我也不知道这些标准版本应该包含哪些内容。

我,而另一方面,允许安装下载的驱动程序......

目标已经运行使用安装的驱动程序3个应用程序。这是他们继续不受干扰地要求的要求。

因此,安装了2套Oracle驱动程序后,如何确保我的新应用程序使用新套件,同时保留旧套件的“主”?

回答

0

我假定两个安装程序都将ODP程序集放入GAC中。如果是这样,你可以强制使用特定的版本。

请确保您在您的.csproj文件中对您要使用的ODP版本进行完全限定的引用。我不知道你需要的程序集的具体细节,但这里是csproj文件中引用应该看起来像什么的例子。确保它是完全合格的(有名称,版本,文化,公钥,体系结构)。那SpecificVersion是真的。

<Reference Include="ODP..., Version=4.x.x.x, Culture=neutral, PublicKeyToken=theKey, processorArchitecture=..."> 
    <HintPath>..\..\..\lib\ODP\ODP.dll</HintPath> 
    <SpecificVersion>True</SpecificVersion> 
</Reference> 

一旦编译完成,这将在您的编译代码中引用特定版本。在运行时,程序集加载器将查找您请求的版本。使用Fusion Log Viewer来跟踪这种情况正如预期的那样发生。如果不是的话,你可以以各种方式实现程序集绑定重定向。

看看这些链接,如果你需要走这条路线:

Redirecting Assembly Versions

How the Runtime Locates Assemblies

0

你需要看看并排端部署,as outlined in Oracle's technetwork

如果这是不可能做到的,因为某些原因,你不得不看隔离应用程序或一些其他的解决方案。

+0

我有,到目前为止,一直无法得到任何相关信息。您的链接似乎也没有任何内容。 –