Nous créons un wrapper C# autour d'une DLL non managée. La DLL non managée est disponible en versions 32 et 64 bits. Nous conservons le wrapper géré dans son propre projet afin que nous puissions le construire en tant que composant séparé et le réutiliser à travers les solutions.Création d'un wrapper géré pour les DLL non gérées 32 bits et 64 bits
Toutefois, cela entraîne certains problèmes. Comme la DLL non managée a le même nom pour les versions 32 bits et 64 bits, nous avons du mal à déplacer la DLL non managée correcte vers le répertoire de sortie (bin). Si la configuration de construction est x86, nous voulons copier la version 32 bits et avec x64 la version 64 bits. Avec une seule architecture de processeur, c'est facile à réaliser. Nous incluons simplement la DLL non managée dans notre projet et définissons copy local à true sur le fichier. Mais puisque nous devons cibler à la fois son plus délicat.
Nous avons trouvé ce lien Targeting both 32bit and 64bit with Visual Studio in same solution/project mais cela semble faire référence à certaines DLL qui existent déjà sur la machine. Nous voulons que la version correcte de la DLL soit copiée dans le répertoire de sortie (bin).
Tous les conseils ou techniques pour résoudre ce problème sont les bienvenus.
Salut et merci pour la réponse. Nous avons implémenté la cible afterbuild comme vous l'avez suggéré dans le fichier projet du projet wrapper. Toutefois, à partir d'autres projets référençant le projet wrapper, les DLL non managées ne sont pas copiées dans le répertoire bin avec la DLL d'encapsuleur. Des conseils sur la façon d'y parvenir? – flalar
En général, ce que nous faisons pour tous les assemblages référencés indirectement et/ou chargés dynamiquement est de les repousser de leur projet TargetDir vers un dossier de sortie commun avec une commande post build. Ensuite, tous les projets qui en ont besoin les copient dans leur TargetDir avec une commande pre/post build. exemple pousser: xcopy "$ (TargetDir) $ (TargetFileName)" "$ (SolutionDir) PluginOutput \"/E/Y exemple traction: xcopy "$ (SolutionDir) PluginOutput \ * dll" « $ (TargetDir) "/ E/Y – duckworth
Où avez-vous obtenu la version x64 de FreeImage DLL? Je l'ai cherché depuis un certain temps, mais il n'y a pas de couture existe! –