Frage

Ich weiß, dass plattformunabhängig .NET-Anwendungen „aufschwimmen“, um die Bitness des Betriebssystems. Aber was ist eine .NET-Assembly, die eine Bibliothek ist, nicht eine ausführbare Datei, von einer non-.NET Anwendung aufgerufen wird?

Wir haben einen .NET-DLL, die eine CLR erweitert für SQL Server gespeicherte Prozedur ist 2005. Derzeit ist es plattformunabhängig ist. Was passiert, wenn die erweiterte gespeicherte Prozedur aus einer SQL Server-Instanz 32-Bit aufgerufen wird, läuft auf 64-Bit-Windows-?

War es hilfreich?

Lösung

Es hängt davon ab, was Ziel der Versammlung für kompiliert wurde. Wenn Sie die DLL „Any CPU“ oder „x86“ in den Projekterstellungsoptionen ausgewählt werden, sollte als 32-Bit-Instanz ausgeführt. Wenn Sie „x64“ wird es eine Ausnahme (BadImageFormatException aus dem Gedächtnis) werfen.

Unter Windows 32-Bit-Prozesse können nicht 64-Bit-DLLs laden, so dass SQL Server eine 32-Bit-Version der .NET-Laufzeit in seinem Prozess ausgeführt werden. So Ihre .NET-Assembly wird auch als 32-Bit sogar auf einer 64-Bit-Maschine ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top