HOWTO Run multiple versions of ODP.NET side by side in multiple applications

(Doc ID 1382336.1)

Last updated on JULY 05, 2017

Applies to:

Oracle Data Provider for .NET - Version: 10.2.0.2.20 and later   [Release: and later ]
Microsoft Windows (32-bit)
Microsoft Windows x64 (64-bit)

Goal

   The goal of this note is to provide information on controlling which version of Oracle Data Provider for .NET is loaded by an application, so that multiple versions of  ODP.NET can be used simultaneously in side by side applications.

Background:

   .NET application security dictates that an application will only run with the version of an assembly it was compiled with.  In order to allow for the use of newer patched assemblies without recompiling the application, the publisher of an assembly can provide a Publisher Policy file that redirects applications looking for an older version to a newer version.

   By default, ODP.NET installs Publisher Policy files into the Global Assembly Cache (GAC) during product installation.  As a result, installing a newer version of ODP.NET for use with a new "application B" just developed may also inadvertently make existing "application A" also use the newer version, which may or may not be the desired behavior. 

  Some notes regarding the policy files and redirection:
  • ODP.NET does not provide Publisher Policy files that redirect across framework versions.
  • When adding a new client home, the most recent ODP.NET installation blindly registers its Publisher Policy files in the GAC, which may overwrite previous policy files that existed which covered the same versions, so applications that previously were redirected to a newer ODP.NET version may be redirected to an older version in some cases.

  • Using the Oracle Home Selector to select a new primary home will re-register Oracle.DataAccess.dll in the GAC, but will not re-register the Publisher Policy files with that home.
  • ODP.NET versions prior to 10.2.0.2.20 relied on the PATH environment variable for dependency loading.  10.2.0.2.20 and higher use the DLLPATH configuration setting to control where the client dependencies are loaded from.

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms