Une application WinForms peut-elle être configurée pour fonctionner en tant que & # 8220; x86 & # 8221; sans recompiler?
-
06-07-2019 - |
Question
Une application WinForms peut-elle être compilée pour "Tous les processeurs"? être configuré pour fonctionner en tant que " x86 " sur un serveur 64 bits sans recompiler l'application? Plus précisément, je recherche un paramètre app.config ou un applet du Panneau de configuration pour atteindre cet objectif. Tous les clients du client sont x86, mais le serveur est x64, et nous aimons installer l'application WinForms sur le serveur pour que les administrateurs puissent configurer et surveiller le système. Nous préférerions de loin ne pas recompiler uniquement pour le serveur.
La solution
De http: // www.request-response.com/blog/PermaLink,guid,34966ef8-3142-46b2-84e0-372b5c36ddcc.aspx
Vous pouvez toutefois contrôler et remplacer ce comportement par défaut même après que votre code ait été compilé. Il y a un outil pratique appelé corflags.exe présent dans le SDK qui vous permet de forcer la compilation 'anycpu' code à utiliser un processus 32 bits en 64 bits monde.
L'utilisation de cet utilitaire se trouve ici http: //msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx
Autres conseils
Aucune configuration ne devrait être nécessaire si vous avez écrit correctement votre code géré. Tant que la machine 64 bits dispose des infrastructures appropriées, le processus JIT prend en charge toute différence entre les exigences 32 et 64 bits.
La seule chose qui doit vous préoccuper dans votre propre code, c'est si vous faites un P / Invoke. Dans ce cas, chaque fois que vous appelez une fonction API utilisant un type HANDLE ou void *, vous devez vous assurer que vous utilisez toujours System.IntPtr et non System.Int32. Dans le monde .NET, le type de données int est TOUJOURS 32 bits, même sur un ordinateur 64 bits. De même, un long correspond toujours à 64 bits, quelle que soit l'architecture.
Et IntPtr, toutefois, a toujours la taille de void *, et donc correctement, les fichiers JIT sont de tailles différentes selon l’architecture de la machine sur laquelle vous travaillez.
J'ai aussi trouvé ce lien utile: http://blogs.intesoft.net/2007/12/default.aspx