Il s'agit purement d'un problème de déploiement, vous ne devriez jamais avoir à gérer différents projets. C'est quand même gênant, et huez Oracle pour ne pas s'en être occupé eux-mêmes. Une autre considération est que cet assemblage doit vraiment être généré sur la machine cible. Quelques choix
- Créez deux programmes d'installation, un pour x64 et un pour x86. Le client choisit le bon, en fonction du système d'exploitation qu'il utilise. Assez simple, il vous suffit de copier le bon fichier.
- Déployez les deux assemblys sur le GAC. Maintenant, c'est automatique, .NET sélectionne le bon sur l'un ou l'autre type de machine. Les grandes entreprises devraient presque toujours utiliser le GAC afin de pouvoir déployer des mises à jour de sécurité, sans savoir pourquoi Oracle ne le fait pas.
- Déployez les assemblys dans un sous-répertoire x86 et x64 du répertoire d'installation. Vous devrez écrire un gestionnaire d'événements AppDomain.AssemblyResolve qui, en fonction de la valeur de IntPtr.Size, sélectionne le bon répertoire.
- Changez la plate-forme cible de votre projet EXE en x86. Étant donné que votre code doit fonctionner sur une machine 32 bits ainsi que sur une machine 64 bits, il n'y a pas/ne devrait pas y avoir de raison de compiler pour AnyCPU.