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

Erro de incompatibilidade do Oracle.DataAccess


Como você disse, é apenas um aviso. Como o ODP.net não é "AnyCPU", o aviso indica que você tem uma dependência que não vai se adaptar ao sistema operacional do host como seu próprio aplicativo. Contanto que sua instalação do odp.net corresponda ao sistema operacional em termos de bits, você ficará bem. Mas o compilador é incapaz de fazer essa determinação e está tentando avisá-lo.

Encontrei um artigo de conexão sobre isso, que inclui uma possível alteração (suponho que no arquivo proj) para desativar o erro:
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

De qualquer forma, seu aplicativo "AnyCPU" funcionará bem em seu servidor, desde que o odp.net de 32 bits que você instalou no servidor seja da mesma versão que o odp.net de 64 bits que você referenciou (ou as políticas do editor estão instaladas corretamente para redirecionar para uma versão posterior). Para eliminar qualquer confusão, geralmente defino "Copiar local" para a referência como "falso". Em outras palavras, eu compilo em relação a uma versão específica da dll, mas deixo que ela seja executada em relação ao que ela resolve do GAC (que inclui políticas de editor que a maioria das instalações do odp.net inclui).

Você também pode instalar o odp.net de 32 bits em sua máquina dev (idealmente a mesma versão novamente) para executar/depurar aplicativos de 32 bits ou usar as ferramentas integradas que vêm "com Oracle Developer Tools for Visual Studio" dentro do Visual Estúdio.

Tudo o que disse, há mais do que aparenta aqui. Se seu aplicativo estiver de fato em execução (o que está implícito com "é apenas um aviso"), como 64 bits, ele NÃO está usando sua instalação de 32 bits. Eu acho que sua máquina já tem a versão de 64 bits instalada (várias casas oracle).