1

Oracle 11g データベースに接続する .NET 4 NT サービスを作成しましたが、デプロイしたいと考えています。

ターゲット マシンには Oracle ドライバーがインストールされていますが、ODP v2 用のみです。(私は仮定します; ODP.NET\Bin には 2.x フォルダーしかありません)

アップグレード パスはありません。会社のパッケージには私が探しているものが含まれておらず、これらの標準ビルドに何を含めるべきかについては何も言えません.

一方、ダウンロードしたドライバーをインストールすることは許可されています...

ターゲットは、インストールされたドライバーを使用して既に 3 つのアプリケーションを実行しています。彼らが邪魔されずにそうし続けることが要件です。

では、2 セットの Oracle ドライバーがインストールされている場合、古いセットを「プライマリ」のままにして、新しいアプリケーションが新しいセットを確実に使用するようにするにはどうすればよいでしょうか?

4

2 に答える 2

0

両方のインストーラーが ODP アセンブリを GAC に配置すると仮定します。その場合、特定のバージョンの使用を強制できます。

.csproj ファイルで、使用する ODP のバージョンへの完全修飾参照を作成してください。必要なアセンブリの詳細はわかりませんが、csproj ファイルで参照がどのように見えるかの例を次に示します。完全に修飾されていることを確認してください (名前、バージョン、カルチャ、公開鍵、アーキテクチャを持っています)。そして、その SpecificVersion は true です。

<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を使用して、これが想定どおりに発生していることを追跡します。そうでない場合は、さまざまな方法でアセンブリ バインディング リダイレクトを実装できます。

このルートに進む必要がある場合は、次のリンクをご覧ください。

アセンブリ バージョンのリダイレクト

ランタイムがアセンブリを見つける方法

于 2013-10-31T17:26:40.203 に答える