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?
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
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.
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
ausC: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe Set64
( Quelle ) )
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):
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.
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%