7
votes

Comment exécuter une application de 32 bits .NET dans un environnement 64 bits?

Nous avons développé une application C # à l'aide du .NET Framework 2.0 qui fonctionne bien dans des ordinateurs 32 bits. Mais quand j'exécute mon application dans un environnement 64 bits, il se bloque.

J'ai besoin de faire mon application pour fonctionner dans un environnement 64 bits.

Comment puis-je faire cela?


1 commentaires

Nous aurons besoin de plus d'informations que cela. Utilise-t-il p / invoke? L'avez-vous isolé à une zone de code spécifique?


8 Réponses :


0
votes

Il devrait simplement exécuter que si vous référencez des bibliothèques spécifiquement disponibles uniquement pour 32 bits (Jet DB Pilotes en est un exemple) ou à moins que vous ayez dit à votre compilateur de compiler votre application à 32 bits.

Que dit l'accident?


1 commentaires

Si le compilateur est dit de compiler à 32 bit seulement, il devrait travailler et est probablement probablement une solution acceptable pour le problème.



4
votes

Dans les paramètres de construction pour votre projet Définissez la cible de la plate-forme sur X86 au lieu de tout CPU. Cela résoudra des problèmes dans lesquels votre projet a des dépendances "cachées" sur les sous-systèmes 32 bits qui ne sont pas disponibles en 64 bits. Votre application fonctionnera ensuite dans le Susbsystem 32 bits sur des fenêtres 64 bits.


0 commentaires

9
votes

Vous pouvez le compiler pour X86 au lieu de tout CPU de cette façon, il fonctionnera contre 32 bits de bibliothèques sur une fenêtre 64 bits.

ou échanger des bibliothèques 32bit pour 64 bits lors de l'installation sur 64 bits Windows. Parmi d'autres DLL SQLITE sont spécifiques pour 32/64 bits


1 commentaires

+1 Cette solution simple m'a sauvé avoir à prendre en charge les constructions X86 et X64 en parallèle! J'aimerais pouvoir uppoter plusieurs fois !!



1
votes

J'ai fait face au même problème. Je suis mon cas il suffisait de compiler l'assemblée principale (.exe) de mon application, en particulier pour "x86". Les autres assemblages (.dll) sont compilés avec "n'importe quel processeur".

Notre application fonctionne ensuite bien sur les systèmes 32bits et 64 bits.


0 commentaires

6
votes

Si vous êtes sous Windows, vous utiliserez Corflags Outil de conversion ( Corflags.exe ). De cette façon, vous pouvez appliquer des applications / DLL à exécuter dans un espace 32/64 bits. Détails et exemples d'utilisation sont disponibles chez http: // msdn. microsoft.com/en-us/library/ms164699(vs.80).aspx .


1 commentaires

Cela fonctionnera, mais si vous construisez sur un serveur de construction, vous devez vraiment vérifier vos objectifs de construction et vos dépendances pour X86. Définir votre projet jusqu'à la construction correctement pour que vos environnements cible auront plus de sens à long terme.



0
votes

est-ce application Windows / ASP.NET?

S'il s'agit d'une application ASP.NET. Vous pouvez exécuter uniquement des modes 32/64 bits en même temps. Pour ce faire, P>

cas 1. Vous devez activer32bitApplication code> sur le pool d'applications dans l'IIS. Puis réinitialisez l'IIS. P>

cas 2. Vérifiez la DLL correspondante dans Regedit. P>

Si elle est basée sur Windows, exécutez cette commande à partir de Visual Studio Invite, P>

CorFlags.exe TheApp.exe /32BIT+ //Enables 32 bit application.


1 commentaires

Activation 32 bits sur l'Apppool dans IIS suffit. Essayer d'utiliser Corflags fonctionne bien, jusqu'à ce que vous trouviez que l'assemblage soit signé, puis il échoue.



4
votes

Voici ce qui semble être une solution agréable si vous cherchez à éviter la recompilation. REMARQUE Il nécessite une modification de chaque machine cible.

Si vous avez une machine de 64 bits et souhaitez exécuter une application .NET fonctionne uniquement avec le CLR 32 bits, vous devriez apporter des modifications à la .NET framework sur votre machine

Définissez la structure .NET pour charger le CLR en mode WOW à travers cette Commande

ouvrir l'invite de commande et tapez cette commande

c: \ windows \ microsoft.net \ fricher64 \ v2.0.50727 \ ldr64.exe setwow

Vous devez maintenant pouvoir exécuter des applications qui utilisent uniquement le fichier CLR .NET 32 bits.

Pour revenir à l'exécution par défaut 64 bits Exécuter

C: \ Windows \ Microsoft.net \ Framework64 \ v2.0.50727 \ ldr64.exe set64

( source )


0 commentaires

2
votes

Il suffit de se développer sur la réponse de Fredrik Leijon ci-dessus, je pense que c'est ce que vous êtes après.

Il indiquera à la fois les fenêtres 64 et 32 ​​bits d'exécuter votre application sur l'environnement 32 bits. P>

Remeber Pour faire la même chose pour votre configuration de "version". p>

Entrez la description de l'image ici P>

Ce sera à son tour à jour votre fichier * .csproj pour msbuild pour venir en choisir comme suit (cochez la case code> ci-dessous): p>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 <OutputPath>bin\Debug\</OutputPath>
 <ErrorReport>prompt</ErrorReport>
 <WarningLevel>4</WarningLevel>
 <PlatformTarget>x86</PlatformTarget>
</PropertyGroup>


0 commentaires