title: Oracle.Dataaccess is in the GAC. Can I control the version I use?
body: <p>I have a XCOPY deployable .NET application using Oracle.DataAccess (ODP.NET). We also deploy the Oracle Instant client in the application directory. Everything works OK, but I worry..</p>
  
  <p>From the Oracle ODP.NET FAQ:</p>
  
  <blockquote>
    <p>Beginning with ODP.NET 10.1.0.3, the Oracle installer will register
    the following publisher policy DLLs in the Global Assembly Cache (GAC)
    that redirect 9.2, 10.1 and 10.2 ODP.NET applications to use the last
    installed version of ODP.NET: Policy.9.2.Oracle.DataAccess.dll and
    Policy.10.1.Oracle.DataAccess.dll</p>
  </blockquote>
  
  <p>This means that on machines where the Oracle ODP.NET is installed, the version in the GAC will be used, not the one I deploy with my application. And because of the publisher policy, that version may be newer than the one I deploy with my application. Oracle.DataAccess needs the Oracle (Instant) client also deployed with my application. These are native Win32 DLLs so my version will be used.</p>
  
  <p>Is is possible that Oracle may upgrade the Oracle.DataAccess to a newer version that may not be compatible with the Oracle Instant Client deployed with my application? And thus breaking my application in the future.</p>
  
  <p>Is this a problem? And can I avoid it? Without installing/removing anything on the machine can I override the Oracle Publishers policy to guarantee that I user the Oracle.Dataaccess version that I xcopy deploy with my application?</p>
  
  <p>For a given version of ODP.NET, what Oracle Clients versions does it support? Will new versions of Oracle.DataAccess support old versions of the Oracle (Instant) Client.</p>