Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle.Dataaccess è nel GAC. Posso controllare la versione che utilizzo?

È possibile forzare la tua applicazione a utilizzare sempre la versione ODP e ODAC che desideri.

  1. Forza la versione ODP:usa il trucco assemblyBinding pubblicato da Robert, per forzare l'uso della tua versione di Oracle.DataAccess invece della versione di GAC. Es.:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Oracle.DataAccess"  culture="neutral" publicKeyToken="89b483f429c47342"/>
            <codeBase version="4.112.3.0" href="FILE://Oracle.DataAccess.dll"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  2. Forza la versione ODAC:la DLL ODP dipende da un insieme di componenti Oracle condivisi (client istantaneo, dll OCI non gestiti). Un modo per ottenerli è tramite il pacchetto ODAC. Puoi definire (in base all'app) quale pacchetto ODAC desideri utilizzare. Tradizionalmente questo veniva fatto tramite la variabile PATH env, ma ora può essere definito tramite config:

    <configuration>
      <configSections>
        <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </configSections>
    
      <oracle.dataaccess.client>
        <settings>
          <add name="DllPath" value="C:\somefolder\ODAC_11.2.0.3.0_32bit\bin" />
        </settings>
      </oracle.dataaccess.client>
    </configuration>
    
  3. Come ulteriore precauzione, puoi sempre eliminare la DLL dei criteri dell'editore di GAC, per assicurarti che non si verifichino mai cose strane.