Wenn ein .NET-Programm direkt oder indirekt plattformabhängigen / nativen / un verwalteten Code aufrufen muss, stürzt es möglicherweise ab.
Dieses 32-Bit / 64-Bit-Thema kam mir in den Sinn, nachdem ich einen neuen Laptop mit Windows 7 64-Bit installiert hatte und versuchte, mit der SQLite-Datenbank zu arbeiten.
System.Data.SQLite
enthält verwalteten Code plus nicht verwalteten Code. Es gibt eine 32-Bit-Version und eine 64-Bit-Version, beide haben denselben Dateinamen, aber unterschiedliche Größe, und Ihre EXE muss die richtige verwenden.
Um es komplizierter zu machen: Mein Visual Studio 2010 Debugger ist eine 32-Bit-Anwendung , daher kann ich nicht debuggen, wenn ich "System.Data.SQLite-64bit" von verwende GAC !
Als .NET Entwickler brauchen wir Richtlinien / Know-how / Best Practices.
Und der beste Ort, um diese Art von Informationen zu sammeln, die ich kenne, ist diese Website ( Ссылка ).
Teilen Sie uns Ihre Ideen und bekannten Probleme mit, die als Best Practices oder Richtlinien dienen könnten in der 32/64 / anyCPU Dotnet-Welt zu überleben.
Ich würde ein Thema / einen Trick pro "Antwort" bevorzugen so kann es einfach kommentiert / aktualisiert / referenziert werden. - zögern Sie nicht, mehrere "Antworten" zu geben.
Ich werde mein Wissen auch als Antwort auf diese Frage weitergeben.
Die Bereitstellung einer zusätzlichen "x86 only" main.exe kann das Leben erleichtern, wenn nativer Code involviert ist
Nach dem Lesen von anycpu-exes-sind-normalerweise-mehr-Probleme-dann-sie-es-wert Ich erkannte, dass die Bereitstellung einer zusätzlichen" x86 only "main.exe kann das Leben einfacher machen.
Da Windows 7 64-Bit x86-32-Bit-Anwendungen ausführen kann, läuft das x86-Programm auf den meisten .NET-Systemen (aber nicht auf Nicht-Intel Mono-Systemen).
Solange die Windows 7 64-Bit Visual Studio 2010-Debugger ist eine 32-Bit-Anwendung die x86-App kann leicht debuggt werden.
Das x86-Release enthält so viele CPU-DLLs wie möglich, außer der Haupt-EXE und den CPU-spezifischen DLLs.
Für Maschinen, die keinen x86-Code ausführen können oder bei denen ein großer Speicherbedarf besteht, können Sie eine zusätzliche Any-CPU bereitstellen EXE-Version. Diese Version erfordert eine angemessene Installation, um sicherzustellen, dass der richtige plattformspezifische Code verwendet wird.
Visual Studio 2010 Gewusst wie: Konfigurieren von Projekten auf Zielplattformen beschreibt, wie die Plattform auf x64 gesetzt wird. Genau wie Sie x86 zielen können.
Tags und Links .net 32bit-64bit sample