Une application WinForms peut-elle être configurée pour fonctionner en tant que & # 8220; x86 & # 8221; sans recompiler?

StackOverflow https://stackoverflow.com/questions/187620

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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top