Ist ngen zu kompilieren .NET-Code in ein binäres verwendet, die installiert werden nicht .NET Framework benötigt werden, wenn der Code ausgeführt wird?

StackOverflow https://stackoverflow.com/questions/3173116

  •  02-10-2019
  •  | 
  •  

Frage

Ich las den folgenden Absatz auf Wikipedia-Artikel über die CLR:

Alternativ kann der CIL-Code sein In dem nativen Code in einem separaten zusammengestellt Schritt vor der Laufzeit durch die Verwendung von Native Image Generator (NGEN). Dies beschleunigt alle später läuft der oben Software wie die CIL-to-native Zusammenstellung ist nicht mehr erforderlich.

Heißt das, dass ich jedes .NET-Programm nehmen und es in einem binären zusammenstellen, die dann auf der Maschine zu laufen in der Lage, das tut das .NET Framework installiert hat?

War es hilfreich?

Lösung

Nein.

Es bedeutet, dass Sie nicht benötigen, um die JIT (Just-In-Time) Compiler ausgeführt wird, wenn Sie den Code ausführen, da es bereits in Maschinencode durch NGen umgewandelt wird. Die resultierenden Binärdateien haben noch Abhängigkeiten von .NET Framework und das muss separat auf dem Rechner installiert werden.

Es gibt Tools, die die Framework-Assembly verpacken und sie in Ihren Binärdateien in einer Weise, die das NET Framework ist nicht erforderlich. Schauen Sie sich http://www.xenocode.com/ . VMWare kaufte ein Tool namens Thinstall, die ich denke, auch dies tun können: http: //www.vmware. com / products / thinapp / .

Andere Tipps

Lesen Sie die MSDN-Seite Ngen wo es heißt:

erzeugt Ngen.exe nativen Bilder, welche Dateien enthalten kompilierten prozessorspezifischen Maschinencode und installiert sie in der nativen Bildcache auf dem lokalen Computer. Die Laufzeit nativen Bilder aus dem Cache verwenden kann, anstatt die Just-in-Time-Compiler (JIT) die ursprüngliche Anordnung zu kompilieren verwenden.

Mittel (für mich), dass Ngen nur das tut, was der JIT-Compiler tut und die Ergebnisse speichert. Es sagt nichts über die .NET-Laufzeiten in den Binärdateien einschließlich.

'NGen' kompiliert nur Ihren Code. Es ist nicht statisch verknüpft die gesamte .NET Framework hinein.

Mono jedoch hat haben einen statischen Compiler und Linker, die dies tun können. Das ist zum Beispiel, wie Mono iPhone Unterstützung funktioniert.

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