Exécution d'une application C # 32 bits sur un ordinateur 64 bits
Question
Comment forcer mon application à s'exécuter en 32 bits sur une machine 64 bits?
Le code est écrit en C #.
La solution
Cliquez avec le bouton droit de la souris sur votre projet et sélectionnez les propriétés.
Dans les propriétés, sélectionnez l'onglet Génération. Sous cible de la plate-forme, sélectionnez x86.
Appuyez sur Ctrl + Maj + S pour enregistrer tous les fichiers, cliquez avec le bouton droit de la souris sur la solution et sélectionnez "Nettoyer". se débarrasser des anciens fichiers binaires. Toutes les constructions ultérieures doivent être au format 32 bits
Autres conseils
Formulaire de ligne de commande:
corflags application.exe /32BIT+
Voici comment je l'ai fait lorsque nous n'avons pas pu modifier le code existant de Any CPU à x86 en raison d'un limitation de ClickOnce :
Créez une application 'launcher' 32 bits (x86 doit être cochée sous les propriétés du projet) (application Windows mais pas de formulaire):
static void Main(string[] args)
{
// Load the assembly
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
Assembly assembly = Assembly.LoadFile(assemblyName);
assembly.EntryPoint.Invoke(null, null);
}
Ajoutez le code suivant à la méthode Main dans le projet Any CPU :
if (IntPtr.Size == 4)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// etc...
}
else
{
// Launch application in 32-bit mode
System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath) + @"\Your32BitApplicationLauncher.exe");
}
J'espère que cela aide :-)
Si vous accédez à Configuration Manager dans Visual Studio, vous pouvez définir la plate-forme sur x86 ou x64.
En supposant qu'il s'agisse d'un service Winforms, d'une application console ou d'un service Windows, vous devez créer le fichier exe pour x86 au lieu de N'importe quel processeur. Cela se trouve dans le Gestionnaire de configuration.
Visual Studio 11 et .NET Framwork 4.5 ou version ultérieure disposent d'une option pour Toute CPU préférée à 32 bits
et c'était la valeur par défaut depuis
Le code résultant s'exécutera sur toutes les plates-formes, mais sur les plates-formes 64 bits, il sera exécuté en tant que processus 32 bits