.NET, "Beliebige CPU / 64Bit (x64) / 32Bit (x86)" Best Practices, Tipps und Tricks

8

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.

    
k3b 25.12.2010, 09:13
quelle

1 Antwort

3

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.

    
k3b 25.12.2010, 09:14
quelle

Tags und Links