2013-10-31 81 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

我有,到目前爲止,一直無法得到任何相關信息。您的鏈接似乎也沒有任何內容。 –