Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle.Dataaccess befindet sich im GAC. Kann ich die von mir verwendete Version kontrollieren?

Es ist möglich, Ihre Anwendung zu zwingen, immer die gewünschte ODP- und ODAC-Version zu verwenden.

  1. ODP-Version erzwingen:Verwenden Sie den von Robert veröffentlichten AssemblyBinding-Trick, um die Verwendung Ihrer Version von Oracle.DataAccess anstelle der GAC-Version zu erzwingen. Beispiel:

    <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. ODAC-Version erzwingen:Die ODP-DLL hängt von einer Reihe gemeinsam genutzter Oracle-Komponenten ab (Instant-Client, nicht verwaltete OCI-DLLs). Eine Möglichkeit, diese zu erhalten, ist über das ODAC-Paket. Sie können (auf App-Basis) definieren, welches ODAC-Paket Sie verwenden möchten. Traditionell wurde dies über die PATH-env-Variable gemacht, aber es kann jetzt über config:

    definiert werden
    <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. Als zusätzliche Vorsichtsmaßnahme können Sie jederzeit die GAC-Publisher-Richtlinien-DLL löschen, um sicherzustellen, dass nie etwas Ungewöhnliches passiert.