هل تستخدم NGEN لتجميع رمز .NET في ثنائي لن يتطلب تثبيت إطار عمل .NET عند تشغيل الرمز؟

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

  •  02-10-2019
  •  | 
  •  

سؤال

قرأت الفقرة التالية على مقالة ويكيبيديا حول CLR:

بدلاً من ذلك ، يمكن تجميع رمز CIL إلى التعليمات البرمجية الأصلية في خطوة منفصلة قبل وقت التشغيل باستخدام مولد الصور الأصلي (NGEN). هذا يسرع في جميع عمليات التشغيل اللاحقة للبرنامج لأن التجميع من CIL إلى أصلي لم يعد ضروريًا.

هل هذا يعني أنه يمكنني أخذ أي برنامج .NET وتجميعه إلى ثنائي سيتمكن بعد ذلك من تشغيل الجهاز الذي لا يتم تثبيته .NET Framework؟

هل كانت مفيدة؟

المحلول

رقم.

هذا يعني أنك لن تحتاج إلى تشغيل برنامج التحويل البرمجي JIT (في الوقت المناسب) عند تشغيل الرمز ، لأنه تم تحويله بالفعل إلى رمز الجهاز بواسطة NGEN. لا تزال الثنائيات الناتجة لديها تبعيات على إطار .NET ، ويجب تثبيتها بشكل منفصل على الجهاز.

هناك أدوات تقوم بتعبئة مجموعات .NET Framework وتضمينها في الثنائيات بطريقة ليست مطلوبة .NET Framework. الدفع http://www.xenocode.com/. اشترى VMware أداة تسمى Thinstall ، والتي أعتقد أنها يمكن أن تفعل ذلك أيضًا: http://www.vmware.com/products/thinapp/.

نصائح أخرى

اقرأ ال صفحة MSDN لـ NGEN حيث تنص على:

يقوم NGEN.EXE بإنشاء صور أصلية ، وهي ملفات تحتوي على رمز الجهاز الخاص المعالج الخاص ، ويقوم بتثبيتها في ذاكرة التخزين المؤقت للصورة الأصلية على الكمبيوتر المحلي. يمكن لوقت التشغيل استخدام الصور الأصلية من ذاكرة التخزين المؤقت بدلاً من ذلك باستخدام مترجم Just-In (JIT) لتجميع التجميع الأصلي.

يعني (بالنسبة لي) أن NGEN يفعل فقط ما يفعله برنامج التحويل البرمجي JIT ويحفظ النتائج. لا يقول أي شيء عن تضمين .NET Runtimes في الثنائيات.

´ngen´ فقط يجمع الكود الخاص بك. لا يربط بشكل ثابت إطار .NET بالكامل فيه.

أحادي ، ومع ذلك ، يفعل احصل على مترجم ثابت ورابط يمكنه القيام بذلك. هذا على سبيل المثال كيف يعمل دعم iPhone الخاص بـ Mono.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top