Wie wird eine 32-Bit-.NET-Anwendung in einer 64-Bit-Umgebung ausgeführt?

7

Wir haben mit dem .NET Framework 2.0 eine C # -Anwendung entwickelt, die in 32-Bit-Computern gut funktioniert. Aber wenn ich meine Anwendung in einer 64-Bit-Umgebung ausführe, stürzt sie ab.

Ich muss meine Anwendung in einer 64-Bit-Umgebung ausführen.

Wie mache ich das?

    
Peter Mortensen 10.07.2009, 07:15
quelle

8 Antworten

9

Sie könnten es für x86 anstelle von irgendeiner CPU kompilieren, so dass es gegen 32-Bit-Librarys auf einem 64-Bit-Fenster läuft.

Oder tauschen Sie 32-Bit-Librarys für 64-Bit aus, wenn Sie 64-Bit-Windows installieren. Unter anderem sind einige SQLite-DLLs spezifisch für 32/64 Bit

    
Fredrik Leijon 10.07.2009 07:23
quelle
5

Wenn Sie Windows verwenden, sollten Sie das CorFlags Conversion-Tool ( CorFlags.exe ) verwenden. Auf diese Weise können Sie Anwendung / DLLs in 32/64 Bit Speicherplatz ausführen. Details und Anwendungsbeispiele finden Sie unter Ссылка .

    
Libor 17.07.2009 14:11
quelle
4

Setzen Sie in den Build-Einstellungen für Ihr Projekt das Plattformziel auf x86 statt Any CPU. Dies wird Probleme lösen, bei denen Ihr Projekt "Abhängigkeiten" von 32-Bit-Subsystemen versteckt hat, die in 64-Bit nicht verfügbar sind. Ihre Anwendung wird dann im 32-Bit-System auf 64-Bit-Windows laufen.

    
Martin Liversage 10.07.2009 07:23
quelle
4

Hier ist, was eine nette Lösung zu sein scheint, wenn Sie die Neukompilierung vermeiden wollen. Beachten Sie, dass eine Änderung an jedem Zielcomputer erforderlich ist.

  

Wenn Sie eine 64-Bit-Maschine haben und eine .NET-Anwendung ausführen möchten, die   funktioniert nur mit der 32-Bit-CLR, an der Sie Änderungen vornehmen müssten   .NET Framework auf Ihrem Computer

     

Legen Sie das .NET Framework fest, um die CLR im WOW-Modus zu laden   Befehl

     

Öffnen Sie die Eingabeaufforderung und geben Sie diesen Befehl ein

     

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe SetWow

     

Jetzt sollten Sie in der Lage sein, Anwendungen auszuführen, die nur die .NET 32 Bit CLR verwenden.

     

Um zum Standard-64-Bit-Framework zurückzukehren, führen Sie

aus      

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe Set64

( Quelle ) )

    
Robb 28.01.2013 18:14
quelle
2

Ich erweitere die obige Antwort von Fredrik Leijon, ich glaube, das ist es, wonach Sie suchen.

Es wird 64- und 32-Bit-Fenstern sagen, dass Ihre Anwendung in der 32-Bit-Umgebung ausgeführt werden soll.

Denken Sie daran, das Gleiche für Ihre "Release" -Konfiguration zu tun.

Dies wird wiederum Ihre * .csproj Datei aktualisieren, damit MSBuild wie folgt aufnimmt (überprüfen Sie das <PlatformTarget/> Element unten):

%Vor%     
Steven de Salas 13.11.2013 04:51
quelle
1

Ich hatte das gleiche Problem. Ich meine es war genug, um die Haupt-Assembly (.exe) meiner Anwendung speziell für "x86" zu kompilieren. Die anderen Assemblys (.dll) werden mit "Any CPU" kompiliert.

Unsere Anwendung funktioniert dann auf 32Bit- und 64Bit-Systemen einwandfrei.

    
Jehof 10.07.2009 07:37
quelle
0

Es sollte nur ausgeführt werden, wenn Sie auf Bibliotheken verweisen, die speziell nur für 32-Bit verfügbar sind (Jet-DB-Treiber sind ein Beispiel), oder Sie haben Ihren Compiler angewiesen, Ihre Anwendung nur auf 32-Bit zu kompilieren.

Was sagt der Absturz?

    
rein 10.07.2009 07:21
quelle
0

Ist es Windows / ASP.NET-Anwendung?

Wenn es sich um eine ASP.NET-Anwendung handelt. Sie können nur 32/64-Bit-Modi gleichzeitig ausführen. Dafür

Fall 1. Sie müssen Enable32bitApplication im Anwendungspool im IIS angeben.           Setzen Sie den IIS dann zurück.

Fall 2. Überprüfen Sie die entsprechende DLL in regedit.

Wenn es auf Windows basiert, führen Sie diesen Befehl über die Visual Studio-Eingabeaufforderung

aus %Vor%     
user237506 23.12.2009 10:29
quelle

Tags und Links