Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle.Dataaccess está no GAC. Posso controlar a versão que uso?


É possível forçar seu aplicativo a usar sempre a versão ODP e ODAC que você deseja.

  1. Forçar versão do ODP:use o truque assemblyBinding postado por Robert, para forçar o uso de sua versão do Oracle.DataAccess em vez da versão do GAC. Por exemplo.:
    <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. Forçar versão ODAC:A DLL ODP depende de um conjunto de componentes Oracle compartilhados (cliente instantâneo, dlls OCI não gerenciadas). Uma maneira de obtê-los é através do pacote ODAC. Você pode definir (por aplicativo) qual pacote ODAC deseja usar. Tradicionalmente, isso era feito por meio da variável PATH env, mas agora pode ser definido por meio de configuração:
    <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. Como precaução extra, você sempre pode excluir a DLL de política de editor do GAC, para garantir que nunca haja nenhum funky acontecendo.