Que faisons-nous si nous avons des développeurs travaillant sur des machines 64 bits et d'autres sur des machines 32 bits, mais nous devons référencer des assemblages non gérés qui doivent être en x86 pour la moitié de l'équipe et x64 pour l'autre moitié? Existe-t-il une solution autre que la mise à jour manuelle des références chaque fois que quelqu'un sur une plate-forme 64 bits obtient le dernier?Assemblages x64 non gérés dans un environnement de développement .NET
Répondre
Vous voulez faire cela dans le cadre de votre construction, non?
Ecrivez une étape de préconfiguration pour copier la DLL référencée d'une position permanente dans votre arborescence source vers le projet local. Utilisez la macro $ (ConfigurationName) ou $ (PlatformName) pour sélectionner quelle version de la DLL non managée est réellement copiée. Vous gardez simplement vos DLL dans des dossiers séparés avec des noms qui correspondent au nom de la configuration ou au nom de la plateforme.
Il est plutôt étrange que les développeurs avec la machine x64 exécutent volontiers la version 64 bits. Visual Studio ne prend pas en charge Modifier + Continuer en mode x64, c'est une perte. La solution de contournement pour cela est simple, définissez Platform Target sur x86. Automagiquement aussi résoudre votre problème DLL non géré.
C'est étrange, et j'en parlerai avec les trois moutons noirs, mais ce serait encore mieux s'il y avait une solution à cela. Je suppose que c'est un joli cas, mais je vais continuer à chercher. – PeteK
Une autre solution consiste à modifier un peu votre code. Il est décrit dans la réponse de Milan Gardian à this question.
Fondamentalement, il implique l'écriture de votre propre gestionnaire de référence d'assembly pour déterminer quel assembly charger lors de l'exécution, à condition que vous ayez accès aux versions (32 et 64 bits) de l'assembly. Je viens de mettre en œuvre cette solution moi-même, et cela fonctionne comme un charme.
Ma situation est la suivante:
Je suis en train de développer un programme .NET destiné à "Any CPU" sur Windows 7 64-bit. J'ai ajouté la référence d'assembly 32 bits et définissez Copy Local sur false. J'utilise des événements post-construction pour copier l'assembly 32 et 64 bits dans le dossier de sortie et je veille à donner un nom différent à l'assembly 32 bits que dans la référence. C'est parce que je veux forcer mon résolveur assembleur personnalisé pour lancer et faire sa chose, en raison du fait que le résolveur d'ensemble par défaut .NETs ne peut pas résoudre la référence. Au moment de l'exécution, l'assembly correct est chargé et lors de la compilation, je n'obtiens aucune erreur. Il convient de noter que je n'ai pas eu le temps de confirmer que cela fonctionne maintenant sur OS 32 bits, mais je ne vois pas pourquoi cela ne devrait pas fonctionner.
- 1. Développement virtuel Environnement Performance - Développement .NET
- 2. Environnement de développement Java EE?
- 3. Corriger l'ordre d'installation dans un environnement de développement asp.net propre
- 4. Sécurisation des assemblages .net
- 5. Environnement de développement Excel addin
- 6. Premiers "programmes" dans un environnement non-web
- 7. VS2008 est lent dans un environnement de développement déconnecté d'Internet
- 8. Transmettre DataTable à un environnement non géré (Visual C# 2005)
- 9. Conversion entre les types gérés et non gérés en C++?
- 10. HMACMD5 dans un environnement compact .net
- 11. Liaison des assemblages .Net
- 12. DotNetnuke environnement de développement et de déploiement
- 13. Environnement de développement Sharepoint/WSS/VS.NET
- 14. Quelle est la meilleure configuration de Windows Server 2008 pour un environnement de développement .NET?
- 15. Environnement de développement Eclipse pour WAS 6.1
- 16. Meilleur outil de développement d'applications mobiles/environnement?
- 17. Environnement de développement pour Jquery et javascript
- 18. Boilerplate pour un environnement professionnel de développement d'équipe PHP
- 19. Connexion aux événements COM en C# - prise en charge des serveurs gérés et non gérés
- 20. Comment configurer un environnement de développement ASP.Net/IIS sur un Mac pour mon développeur Flash?
- 21. Dynamiquement chargement des assemblages .NET
- 22. DataGrid Flex - Alternatives dans un environnement non-flex/flash?
- 23. .NET Client Profile sur x64
- 24. Gestion des délégués gérés dans le code non managé
- 25. Assemblages référencés .NET - numéros de version
- 26. Vista x64, développement de gadget, OLEDB Erreur: "fournisseur introuvable"
- 27. Auto-traitement de beans non gérés annotés avec @Component
- 28. Comment modifier mon environnement de développement dans un autre langage dans Visual Studio?
- 29. Forum comme environnement de collaboration pour petite équipe de développement
- 30. vs2008 problème de publication avec les DLLs non gérés
En fait, c'est au moment du design. Nous avons la solution pour le processus de construction en place, mais quelques-uns des développeurs compilent dans Debug | x64. – PeteK