مشاركة عبر


Ngen.exe (مولد النسخة الأصلي)

مولد الصورة الأصلية (Ngen.exe) عبارة عن أداة تعمل على تحسين أداء تطبيقات يتم إدراتها. ينشئ Ngen.exe نسخ أصلية , والتي هي ملفات تحتوي على تعليمات برمجية الجهاز المترجمة الخاصة بالمعالج و يقوم بتثبيتها إلى ذاكرة التخزين المؤقت للنسخة الأصلية على الكمبيوتر المحلي. و يمكن استخدام الصور الأصلية أثناء وقت التشغيل من ذاكرة التخزين المؤقت بدلاً من استخدام برنامج التحويل البرمجي في نفس الوقت (JIT) لترجمة التجميع الأصلي.

تغييرات ل Ngen.exe في .NET Framework الإصدار 4:

  • Ngen.exe الآن تترجم تجميعات بثقة كاملة و سياسة أمان وصول التعليمات البرمجية (CAS) لا تقيم بعد الآن.

  • الصور الأصلية التي يتم إنشاؤها مع Ngen.exe لا يمكن تحميلها بعد ذلك في التطبيقات التي تعمل في بيئة عمل ذات ثقة جزئية.

يتغيّر إلى Ngen.exe في NET Framework. الإصدار 2.0:

  • تثبيت تجميع يقوم أيضًا بتثبيت تبعياته, مبسطاً بناء الجملة ل Ngen.exe.

  • يمكن الآن مشاركة الصور الأصلية عبر مجالات التطبيق.

  • الإجراء الجديد update يعيد إنشاء نسخ تم إبطالها.

  • يمكن تاجيل الإجراءات لتنفيذها بواسطة خدمة تستخدم وقت الخمول على الكومبيوتر لتوليد و تثبيت نسخ.

  • تم إزالة بعض أسباب عدم صلاحية النسخة.

للحصول على معلومات إضافية حول استخدام Ngen.exe و خدمة النسخة الأصلية , راجع خدمة الصورة الأصلية.

ملاحظةملاحظة

يمكن إيجاد بناء الجملة ل Ngen.exe للإصدارات 1.0 و 1.1 من NET Framework. في بناء جملة مولد النسخة الأصلية (Ngen.exe) القديم.

يتم تلقائياً تثبيت مولد النسخة الأصلية مع ‏‫Visual Studio. و لتشغيل الأداة استخدم موجه أوامر Visual Studio.. في موجه الأوامر، اكتب ما يلي:

ngen <action> [options]
ngen /? | /help

الإجراءات

يعرض الجدول التالي بناء جملة كل إجراء. لوصف الأجزاء الفردية ل actionArguments، راجع جداول الوسائط, السيناريوهات و تكوين. الجدول خيارات يصف options ومفاتيح تبديل التعليمات.

Action

الوصف

install [assemblyName | assemblyPath] [scenarios] [config] [/queue[:{1|2|3}]]

قم إنشاء النسخ الأصلية لتجميع وتبعياته و ثبت النسخ في ذاكرة التخزين المؤقت للنسخة الأصلية.

إذا تم تحديد /queue , يتم وضع الإجراء في قائمة الإنتظار لخدمة النسخة الأصلية. الأفضلية الإفتراضية هي 3.

uninstall [assemblyName | assemblyPath] [scenarios] [config]

إحذف النسخ الاصلية للتجميع و تبعياته من ذاكرة التخزين المؤقت للنسخة الاصلية.

لإلغاء نسخة مفردة وتبعياتها , استخدم نفس وسائط خط الأمر المستخدمة لتثبيت النسخة.

ملاحظةملاحظة
في .NET Framework الإصدار 4، فإن الإجراء uninstall * لم يعد معتمداً. 

update [/queue]

قم بتحديث النسخ الأصلية التي أصبحت غير صالحة.

إذا تم تحديد /queue , يتم وضع التحديثات في قائمة الإنتظار لخدمة النسخة الأصلية. يتم جدولة التحديثات دوماً بأفضلية 3 ، لذا يتم تشغيلها عند خمول الكمبيوتر.

display [assemblyName | assemblyPath]

قم بعرض حالة النسخ الأصلية للتجميع والتبعيات الخاصة به.

إذا لم يتم توفير أية وسيطات , يتم عرض كل شيء في ذاكرة التخزين المؤقت للنسخة الاصلية.

executeQueuedItems [1|2|3]

-أو-

eqi [1|2|3]

قم بتنفيذ مهام الترجمة الموجودة في قائمة الانتظار.

إذا تم تحديد أولوية , يتم تنفيذ مهام الترجمة بنفس الأولوية أو أكبر. إذا لم يتم تحديد أولوية, يتم تنفيذ كل مهام الترجمة الموجودة في قائمة الانتظار.

queue {pause | continue | status}

الإيقاف المؤقت لخدمة النسخة الأصلية يسمح للخدمة المتوقفة مؤقتاً بالمتابعة أو الاستعلام عن حالة الخدمة.

الوسيطات

الوسيطة

الوصف

assemblyName

إسم العرض الكامل للتجميع. على سبيل المثال، "myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5".

ملاحظةملاحظة
يمكنك توفير اسم تجميع جزئي مثل myAssembly، لإجراءات display و uninstall.

يمكن أن يتم تحديد تجميع واحد فقط لكل خط أمر Ngen.exe.

assemblyPath

مسار التجميع الواضح. يمكنك تحديد مسار كامل أو نسبي.

إذا عينت اسم ملف بدون مسار, يجب وضع التجميع في الدليل الحالي.

يمكن أن يتم تحديد تجميع واحد فقط لكل خط أمر Ngen.exe.

المواقف

السيناريو

الوصف

/Debug

تنشىء نسخ أصلية التي يمكن استخدامها ضمن مصحح الأخطاء.

/Profile

تنشىء نسخ أصلية التي يمكن استخدامها ضمن محلل ملفات التعريف.

/NoDependencies

تنشىء الحد الأدنى لرقم النسخ الأصلية المطلوبة من قبل خيارات السيناريو المحدد.

التكوين

التكوين

الوصف

/ExeConfig:exePath

استخدم التكوين للتجميع المحدد القابل للتنفيذ.

يحتاج Ngen.exe اتخاذ نفس قرارات المُحمل عند ربط التبعيات. عندما يتم تحميل مكون مشترك وقت التشغيل باستخدام الأسلوب Load يحدد ملف تكوين التطبيق التبعيات التي يتم تحميلها لمكون مشترك — على سبيل المثال، إصدار التبعية التي تم تحميلها. المبدل /ExeConfig يعطي Ngen.exe إرشادات التي حولها يتم تحميل التبعيات في وقت التشغيل.

/AppBase:directoryPath

عند تحديد موقع التبعيات, استخدم الدليل المحدد كأساس التطبيق.

خيارات

الخيار

الوصف

/nologo

يقوم بمنع عرض شعار بدء التشغيل ل Microsoft.

/silent

يقوم بمنع عرض رسائل النجاح.

/verbose

يعرض معلومات مفصلة عن تصحيح الأخطاء.

ملاحظةملاحظة
بسبب قيود نظام تشغيل , هذا الخيار لا يعرض معلومات إضافية بقدر Windows 98 و Windows Millennium Edition.

/help, /?

لعرض بناء جملة الأمر والخيارات للمنتج الحالي.

ملاحظات

لتشغيل Ngen.exe, يجب ان يكون لديك إمتيازات إدارية.

ملاحظة تنبيهتنبيه

لا تقم بتشغيل Ngen.exe على تجميعات غير موثوق بها ثقة كاملة.بدءاً ب .NET Framework الإصدار 4 Ngen.exe الآن تترجم تجميعات بثقة كاملة و سياسة أمان وصول التعليمات البرمجية (CAS) لا تقيم بعد الآن.

بدءاً ب .NET Framework 4، النسخ الأصلية التي يتم إنشاؤها مع Ngen.exe لا يمكن تحميلها في التطبيقات التي تعمل في بيئة عمل ذات ثقة جزئية. بدلاً من ذلك، يتم استدعاء برنامج التحويل البرمجي "في نفس الوقت" (JIT).

ينشئ Ngen.exe نسخ أصلية للتجميع المحدد و كل التبعيات الخاصة به. التبعيات تحدد من المراجع في بيان التجميع. السيناريو الوحيد الذي فيه تحتاج لتثبيت تبعية بشكل منفصل عندما يحمّله تطبيق باستخدام الانعكاس, على سبيل المثال عن طريق استدعاء الأسلوب Assembly.Load.

ملاحظة هامةهام

لا تستخدم الأسلوب Assembly.LoadFrom مع النسخ الأصلية.لا يمكن استخدام النسخة التي تم تحميلها بهذا الأسلوب بواسطة تجميعات أخرى في سياق التنفيذ.

يحتفظ Ngen.exe بتعداد للتبعيات. على سبيل المثال، افترض أن تم تحميل كلا من MyAssembly.exe و YourAssembly.exe يتم تثبيت كل منهما في ذاكرة التخزين المؤقت للنسخة الأصلية و كلا منها لديه مرجع إلى OurDependency.dll. إذا تم إزالة تثبيت MyAssembly.exe , تتم إزالة تثبيت OurDependency.dll. يتم فقط إزالته عندما يتم إزالة تثبيت YourAssembly.exe أيضاً.

إذا كنت تقوم بإنشاء نسخة أصلية للتجميع في مخزن التجميع المؤقت العمومي ، حدد اسم العرض الخاص به. انظر Assembly.FullName

يمكن مشاركة النسخ الأصلية التي تنشئ بواسطة Ngen.exe عبر مجالات التطبيق. وهذا يعني يمكنك استخدام Ngen.exe في وحدات سيناريو التطبيق التي تتطلب مشاركة التجميعات عبر مجالات التطبيق. لتحديد تعادل مجال:

استخدم تعليمات برمجية مجال محايد دوماً عند تحميل التجميع نفسه إلى عدة مجالات تطبيق. إذا تم تحميل نسخة أصلية في مجال تطبيق غير مشترك بعد أن تم تحميلها في مجال مشترك, فإنه لا يمكن استخدامها.

ملاحظةملاحظة

تعليمات برمجية المجال المحايد لا يمكن إلغاء تحميلها ، وقد يكون الأداء بعض الشيء أبطأ و بشكل خاص عند الوصول إلى الأعضاء الثابتة.

إنشاء نسخ لوحدات سيناريو مختلفة

بعد إنشاء نسخة أصلية للتجميع , وقت التشغيل يحاول أوتامتيكياً تحديد موقع النسخة الاصلية و استخدامها في كل مرة يشغل التجميع. يمكن إنشاء نسخ متعددة اعتماداً على سيناريوهات الاستخدام.

على سبيل المثال، إذا قمت بتشغيل تجميع في سيناريو التصحيح أو كتابة المعلومات , وقت التشغيل يبحث عن نسخة أصلية تم إنشاؤها مع الخيارات /Debug أو /Profile. إذا لم تكن قادرة على العثور على نسخة أصلية , وقت التشغيل يعود إلى التحويل البرمجي JIT القياسي. الطريقة الوحيدة لتصحيح النسخ الأصلية هو إنشاء نسخة أصلية باستخدام الخيار /Debug.

الإجراء uninstall أيضاً يتعرف على سيناريوهات بحيث يمكنك إزالة تثبيت كل وحدات السيناريو أو وحدات السيناريو المحددة فقط.

تحديد وقت استخدام النسخ الأصلية

يمكن للنسخ الأصلية توفير تحسينات للأداء في ناحيتين: استخدام الذاكرة المحسنة و تقليل وقت بدء التشغيل.

ملاحظةملاحظة

أداء النسخ الأصلية يعتمد على عدد من العوامل التي تجعل التحليل صعب مثل نقوش الوصول إلى التعليمات البرمجية والبيانات , عدد المكالمات التي تم إجراؤها عبر حدود الوحدة النمطية و عدد التبعيات التي تم تحميلها بالفعل بواسطة تطبيقات أخرى.الطريقة الوحيدة لتحديد ما إذا كانت النسخ الأصلية تفيد التطبيق الخاص بك هو بواسطة قياسات أداء حذرة في سيناريوهات توزيع المفتاح.

إستخدام الذاكرة المحسنة

النسخ الأصلية يمكنها تحسين استخدام الذاكرة بشكل ملحوظ عند مشاركة التعليمات البرمجية بين العمليات. النسخ الأصلية هي ملفات Windows PE لذا يمكن مشاركة نسخة واحدة من ملف dll. بواسطة عدة عمليات; بواسطة التباين , التعليمات البرمجية الاصلية التي يتم إنتاجها بواسطة المحول البرمجي JIT تخزن في ذاكرة خاصة و لا يمكن مشاركتها.

يمكن أيضًا أن تستفيد التطبيقات التي يتم تشغيلها ضمن الخدمات الطرفية من مشاركة تعليمات برمجية الصفحات.

بالإضافة إلى ذلك، عدم تحميل برنامج التحويل البرمجي JIT يحفظ مقدار ثابت من الذاكرة لكل مثيل تطبيق.

بدأ تشغيل أسرع للتطبيق

إعادة ترجمة التجميعات بواسطة Ngen.exe يحسن بدء تشغيل بعض التطبيقات. بشكل عام، يمكن إجراء مكاسب عندما تشارك التطبيقات تجميعات المكون لأن بعد بدأ تشغيل التطبيق , المكونات المشاركة تكون بالفعل مثبتة للتطبيقات اللاحقة. بدأ التشغيل البارد الذي فيه يجب تثبيت كل التجميعات في التطبيق من القرص الثابت لا يفيد كالنسخ الأصلية لان وقت الوصول للقرص الثابت يتغير.

الربط الثابت يمكن أن يؤثر على وقت بدأ التشغيل, لأن كل النسخ المنضمة إلى تجميع التطبيق الأساسي يجب أن يتم تحميلها في نفس الوقت.

ملاحظةملاحظة

قبل.NET Framework الإصدار 3.5 Service Pack 1، يجب عليك وضع المكونات المشتركة ذات الأسماء القوية في مخزن التجميع العمومي المؤقت لأن المُحمل ينفذ عملية التحقق من الصحة إضافية على التجميعات قوية المسمى وليست في مخزن التجميع العمومي المؤقت , بشكل فعال يزيل أي تحسن في وقت بدء التشغيل المكتسب باستخدام النسخ الأصلية.الأمثلية التي تم تقديمها في .NET Framework 3.5 SP1 يزيل التحقق الإضافي.

أهمية عناوين قاعدة التجميع

لأن النسخ الأصلية هي ملفات Windows PE ، تكون خاضعة إلى نفس قضايا القاعدة كالملفات القابلة للتنفيذ الأخرى. تكلفة الأداء لإعادة تحديد الموقع هي أكثر تهجئة إذا تم توزيع الربط الثابت.

لتعيين العنوان الأساسي للنسخة الأصلية, استخدم الخيار المناسب لبرنامج التحويل البرمجي الخاص بك لتعيين العنوان الأساسي للتجميع. يستخدم Ngen.exe العنوان الأساسي للنسخة الأصلية.

ملاحظةملاحظة

النسخ الأصلية أكبر من التجميعات المدارة التي بواسطتها تم إنشاؤها.يجب احتساب العناوين الأساسية للسماح لهذه الأحجام الأكبر.

يمكنك استخدام أداة مثل dumpbin.exe لعرض العنوان الأساسي المفضل للنسخة الأصلية.

خلاصة اعتبارات الإستخدام

الإعتبارات العامة التالية و إعتبارات التطبيق ممكن أن تساعد في إتخاذ قرار ما إذا كنت تحمل جهد تقييم النسخ الأصلية للتطبيق الخاص بك:

  • تحميل النسخ الأصلية أسرع من MSIL لأنها تزيل الحاجة إلى أنشطة بدء تشغيل كثيرة مثل التحويل البرمجي JIT و التحقق ذو النوع الآمن.

  • النسخ الأصلية تتطلب مجموعة عمل أولي أصغر أولي لأنه ليس هناك حاجة لبرنامج التحويل البرمجي JIT.

  • النسخ الاصلية تمكن مشاركة التعليمات البرمجية بين العمليات.

  • النسخ الأصلية تتطلب مسافة على القرص الثابت أكثر من تجميعات MSIL و قد تتطلب وقت معتبر للإنشاء.

  • يجب الاحتفاظ بالنسخ الأصلية.

    • يجب إنشاء النسخ عند خدمة التجميع الأصلي أو أحد تبعياته.

    • قد يحتاج التجميع المفرد نسخ أصلية متعددة لاستخدامها في سيناريوهات أو تطبيقات مختلفة. على سبيل المثال، قد تؤدي معلومات التكوين في تطبيقين القرارات إلى ربط مختلف عن نفس التجميع التابع.

    • يجب أن يتم إنشاء النسخ الأصلية من قبل أحد المسؤولين أي، من حساب Windows في مجموعة المسؤولين.

بالإضافة إلى هذه الاعتبارات العامة يجب أن يتم اعتبار طبيعة التطبيق الخاص بك عند تحديد ما إذا كانت النسخ الأصلية توفر فائدة للأداء:

  • إذا كان التطبيق الخاص بك يعمل في بيئة تستخدم العديد من المكونات المشتركة، فإن النسخ الأصلية تسمح بمشاركة المكونات بواسطة عمليات متعددة.

  • إذا كان التطبيق الخاص بك يستخدم مجالات تطبيق متعددة, تسمح النسخ الأصلية بمشاركة صفحات التعليمات البرمجية عبر المجالات.

    ملاحظةملاحظة

    في إصدارات 1.1 و 1.0 من NET Framework. ، لا يمكن مشاركة النسخ الأصلية عبر مجالات التطبيق.ليس هذا هو الحال في الإصدار 2.0 أو الإصدار الأحدث.

  • إذا سيتم تشغيل التطبيق الخاص بك ضمن "ملقم طرفي", تسمح النسخ الأصلية بمشاركة صفحات التعليمات البرمجية.

  • بشكل عام تستفيد التطبيقات الكبيرة من الترجمة إلى النسخ الأصلية. بشكل عام لا تستفيد التطبيقات الصغيرة.

  • للتطبيقات التي تعمل لفترة طويلة , وقت تشغيل التحويل البرمجي JIT ينجزأفضل بقليل من النسخ الأصلية. (يمكن للربط الثابت تخفيف إختلاف الأداء هذا إلى درجة معينة).

الربط الثابت

الربط الثابت يزيد الإنتاجية و يقلل حجم مجموعة العمل للنسخ الأصلية. سيئات الربط الثابت هو أن كل الصور المضمنة بثبات للتجميع يجب تحميلها عند تحميل التجميع. هذا يؤدي إلى زيادة وقت بدأ تشغيل التطبيقات الكبيرة بشكل ملحوظ.

الربط الثابت يتناسب مع التبعيات التي يتم تحميلها في كافة سيناريوهات الأداء الهامة للتطبيق الخاص بك. كما في أي جانب من استخدام النسخة الأصلية, القياسات الحذرة للأداء هي الطريقة الوحيدة للتعرف على ما إذا كان الربط الثابت يحسن أداء التطبيق الخاص بك.

السمات DependencyAttribute و DefaultDependencyAttribute تسمح لك بتوفير تلميحات ربط ثابت إلى Ngen.exe.

ملاحظةملاحظة

تكون هذه السمات تلميحات إلى Ngen.exe وليست أوامر.لا يضمن استخدامها الربط الثابت.معنى هذه السمات قد يغير من الإصدارات المستقبلية.

تعيين تلميح ربط من أجل التبعية

طبق DependencyAttribute إلى تجميع للإشارة إلى احتمال أنه سيتم تحميل التبعية المحددة. LoadHint.Always يشير إلى أن الربط الثابت مناسباً، Default تشير إلى أنه يجب استخدام الافتراضي للتبعية, و Sometimes تشير إلى أن الربط الثابت غير مناسب.

تظهر التعليمات البرمجية التالية السمات الخاصة بالتجميع الذي يحتوي على اثنين من التبعيات. التبعية الأولى (Assembly1) هي ترشيح مناسب للربط الثابت ، و الثانية (Assembly2) ليست كذلك.

Imports System.Runtime.CompilerServices
<Assembly:DependencyAttribute("Assembly1", LoadHint.Always)>
<Assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)>
using System.Runtime.CompilerServices;
[assembly:DependencyAttribute("Assembly1", LoadHint.Always)]
[assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)]
using namespace System::Runtime::CompilerServices;
[assembly:DependencyAttribute("Assembly1", LoadHint.Always)];
[assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)];

لا يتضمن اسم التجميع ملحق اسم الملف. يمكن استخدام أسماء العرض.

تعيين تلميح الربط الافتراضي لتجميع

تلميحات الربط الافتراضية مطلوبة فقط للتجميعات التي سيتم استخدامها فوراً و بشكل متكرر بواسطة أي تطبيق الذي له تبعية عليهم. طبق DefaultDependencyAttribute مع LoadHint.Always إلى مثل هذه التجميعات لتحديد أنه يجب استخدام الربط الثابت.

ملاحظةملاحظة

لا يوجد سبب لتطبيق DefaultDependencyAttribute في التجميعات dll. التي لا تقع في هذه الفئة لأن تطبيق السمة مع أية قيمة أخرى غير LoadHint.Always له نفس التأثير كعدم تطبيق السمة على الإطلاق.

تستخدم Microsoft DefaultDependencyAttribute لتحديد أن الربط الثابت هو الافتراضي لعدد قليل جدًا من التجميعات في NET Framework. مثل mscorlib.dll.

استكشاف الأخطاء وإصلاحها

للتأكد من أن النسخ الأصلية يتم إستخدامها بواسطة التطبيق الخاص بك ، يمكنك استخدام Fuslogvw.exe (عارض سجل ربط التجميع). حدد النسخ الأصلية في المربع فئات السجل على نافذة عارض سجل الربط. Fuslogvw.exe يوفر معلومات حول سبب رفض النسخة الأصلية.

يمكنك استخدام مساعد التصحيح المدار jitCompilationStart MDA MDA لتحديد وقت بدء برنامج التحويل البرمجي JIT إترجمة دالة.

المعالجة المؤجلة

إنشاء النسخ الاصلية للتطبيقات الكبيرة يمكن أن يأخذ وقت معتبر. وبالمثل، تغييرات للمكون المشترك أو إعدادات الكومبيوتر قد يتطلب عدة تحديثات للنسخ الأصلية. الإجراءات install و update تحتوي على خيار /queue الذي يضع عملية في قائمة الإنتظار للتنفيذ المؤجل بواسطة خدمة النسخة الأصلية. بالإضافة إلى ذلك، يحتوي Ngen.exe على خيارات queue و executeQueuedItems التي توفر بعض التحكم في الخدمة. لمزيد من المعلومات، راجع خدمة الصورة الأصلية.

النسخ الأصلية و التحويل البرمجي JIT

إذا واجه Ngen.exe أية أساليب في تجميع الذي لا يمكنه إنشاؤه , فإنه يستثنيهم من النسخة الأصلية. عندما ينفذ وقت التشغيل هذا التجميع , فإنه يعود إلى التحويل البرمجي JIT للأساليب التي لم يتم تضمينها في النسخة الأصلية.

بالإضافة إلى ذلك، النسخ الأصلية غير مستخدمة في حالة ترقية التجميع أو في حالة التحقق من عدم صحة النسخة لأي سبب.

النسخ الغير صالحة

عند استخدام Ngen.exe لإنشاء نسخة أصلية لتجميع , الإخراج يعتمد على خيارات خط الأوامر التي تحددها و على إعدادات معينة على الكومبيوتر الخاص بك. تتضمن هذه الإعدادات ما يلي:

  • إصدار NET Framework..

  • إصدار نظام التشغيل, إذا كان التغيير من عائلة Windows 9 x إلى عائلة Windows NT.

  • هوية التجميع بالضبط (إعادة التحويل البرمجي يغير الهوية).

  • هوية كل التجميعات بالضبط التي يرجع إليها التجميع (إعادة التحويل البرمجي يغير الهوية).

  • عوامل الأمان.

Ngen.exe يسجل هذه المعلومات عندما يقوم بإنشاء نسخة أصلية. عندما تقوم بتنفيذ التجميع , وقت التشغيل يبحث عن النسخة الأصلية التي تم إنشاؤها باستخدام الخيارات والإعدادات التي تتطابق مع بيئة جهاز الكمبيوتر الحالية. وقت التشغيل يعود إلى التحويل البرمجي JIT لتجميع إذا لم يتمكن من العثور على نسخة أصلية مطابقة. تتسبب التغييرات التالية على بيئة و إعدادات جهاز كمبيوتر بجعل النسخ الأصلية غير صالحة:

  • إصدار NET Framework..

    إذا قمت بتطبيق تحديث إلى NET Framework. , كل النسخ الأصلية التي تم إنشاؤها باستخدام Ngen.exe تصبح غير صالحة. لهذا السبب، كل التحديثات من برنامج NET Framework. تنفذ الأمر Ngen Update، للتأكد من أنه يتم إعادة إنشاء كل النسخ الأصلية. ينشئ برنامج NET Framework. تلقائياً نسخ أصلية جديدة لمكتبات NET Framework. التي يثبتها.

  • إصدار نظام التشغيل, إذا كان التغيير من عائلة Windows 9 x إلى عائلة Windows NT.

    على سبيل المثال، إذا تغير إصدار نظام تشغيل الذي يعمل على جهاز كمبيوتر من Windows 98 إلى نظام تشغيل Windows XP , كل النسخ الاصلية المخزنة في مخزن النسخة الأصلية المؤقت تصبح غير صالحة. ومع ذلك، إذا تغير نظام تشغيل من نظام التشغيل Windows 2000 إلى نظام التشغيل Windows XP , لن يتم إبطال النسخ.

  • هوية التجميع بالضبط.

    إذا قمت بإعادة ترجمة التجميع , فإن نسخة التجميع الأصلية الموافقة تصبح غير صالحة.

  • هوية أي تجميعات بالضبط التي يرجع إليها التجميع.

    إذا قمت بتحديث تجميع مدار, كل النسخ الأصلية التي تعتمد بشكل مباشر أو غير مباشر على هذا التجميع تصبح غير صالحة وتحتاج إلى أن يتم إعادة إنشائها. ويتضمن ذلك كل من المراجع العادية و التبعيات المنضمة بقوة. كلما يتم تطبيق تحديث برنامج , برنامج التثبيت يجب أن ينفذ أمر Ngen Update للتأكد من إعادة إنشاء كل النسخ الأصلية التابعة.

  • عوامل الأمان.

    تغيير نهج أمان الجهاز إلى تقييد الأذونات الممنوحة مسبقاً إلى تجميع قد يؤدي إلى جعل النسخة الأصلية المترجمة مسبقاً لتصبح غير صالحة.

    للحصول على معلومات مفصلة حول كيفية قيام وقت تشغيل اللغة العامة بإدارة أمان الوصول إلى التعليمات البرمجية وكيفية استخدام الأذونات ، راجع أمان رمز الوصول.

أمثلة

يقوم الأمر التالي بإنشاء نسخة أصلية لـ ClientApp.exe، الموجود في الدليل الحالي ويقوم بتثبيت النسخة في ذاكرة تخزين النسخة المؤقت. إذا توفر ملف تكوين للتجميع , يستخدمه Ngen.exe. بالإضافة إلى ذلك، يتم إنشاء نسخ أصلية لملفات dll. التي ترجع إليها ClientApp.exe.

ngen install ClientApp.exe

التسخة المثبتة مع Ngen.exe تسمى أيضاً جذر. الجذر ممكن أن يكون تطبيق أو مكون مشترك.

يقوم الأمر التالي بإنشاء نسخة أصلية لـ MyAssembly.exe مع المسار المحدد.

ngen install c:\myfiles\MyAssembly.exe

عند تحديد موقع التجميعات و التبعيات الخاصة بهم، Ngen.exe يستخدم نفس منطق probing المستخدم من قبل وقت تشغيل اللغة العامة. بشكل افتراضي، الدليل الذي يحتوي على ClientApp.exe يتم استخدامه كدليل قاعدة التطبيق و كل تدقيق التجميع يبدأ في هذا الدليل. يمكنك منع هذا السلوك باستخدام الخيار /AppBase.

ملاحظةملاحظة

هذا تغيير من سلوك Ngen.exe في إصدارات 1.0 و 1.1 من NET Framework. , حيث يتم تعيين أساس التطبيق إلى الدليل الحالي.

يمكن أن يكون للتجميع تبعية دون مرجع ,على سبيل المثال إذا كان يحمل ملف dll. باستخدام الأسلوب Assembly.Load. يمكنك إنشاء نسخة أصلية لملف dll. باستخدام معلومات التكوين لتجميع التطبيق مع الخيار /ExeConfig. يقوم الأمر التالي بإنشاء نسخة أصلية لـ MyLib.dll, باستخدام معلومات التكوين من MyApp.exe.

ngen install c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe

لا تتم إزالة التجميعات التي تم تثبيتها بهذه الطريقة عند إزالة التطبيق.

لإلغاء تثبيت تبعية, استخدم نفس خيارات خط الأوامر التي تم استخدامها لتثبيتها. الأمر التالي يلغي تثبيت MyLib.dll من المثال السابق.

ngen uninstall c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe

لإنشاء نسخة أصلية للتجميع في مخزن التجميع العمومي المؤقت , استخدم اسم عرض التجميع. فعلى سبيل المثال:

ngen install "ClientApp, Version=1.0.0.0, Culture=neutral, 
  PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"

NGen.exe يقوم بإنشاء مجموعة منفصلة من النسخ لكل سيناريو تثبته. على سبيل المثال، الأوامر التالية تثبت مجموعة كاملة من نسخ اصلية لعملية طبيعية , مجموعة كاملة أخرى للتصحيح و ثالثة للتشكيل الجانبي:

ngen install MyApp.exe
ngen install MyApp.exe /debug
ngen install MyApp.exe /profile

عرض ذاكرة التخزين المؤقت للنسخة الأصلية

حالما يتم تثبيت النسخ الأصلية في ذاكرة التخزين المؤقت, يمكن عرضها باستخدام Ngen.exe. يعرض الأمر التالي كل النسخ الأصلية نسخة s في ذاكرة التخزين المؤقت للنسخة.

ngen display

الإجراء display يسرد كل تجميعات الجذر أولاً، متبوعاً بقائمة من النسخ الأصلية على الكمبيوتر.

استخدم اسم تجميع بسيط لعرض معلومات فقط من أجل هذا التجميع. يعرض الأمر التالي كل النسخ الاصلية في ذاكرة االتخزين المؤقت للنسحة الأصلية التي تطابق الإسم الجزئي MyAssembly، التبعيات الخاصة بها و كل الجذور التي لديها تبعية على MyAssembly:

ngen display MyAssembly

بمعرفة أن الجذور تعتمد على تجميع المكون المشترك المفيد في التأثير على الإجراء update بعد ترقية المكون المشترك.

في حالة تحديد ملحق ملف التجميع يجب إما تحديد مسار أو تنفيذ Ngen.exe من الدليل الذي يحتوي على التجميع:

ngen display c:\myApps\MyAssembly.exe

يعرض الأمر التالي كل النسخ الأصلية في مخزن النسخة الاصلية المؤقت مع الاسم MyAssembly و الإصدار 1.0.0.0.

ngen display "myAssembly, version=1.0.0.0"

تحديث النسخ

عادةً ما يتم تحديث النسخ بعد ترقية المكون المشترك. لتحديث كل النسخ الأصلية التي تم تغييرها أو تم تغيير تبعياته , استخدم الإجراء update بدون وسائط.

ngen update

تحديث كل النسخ قد يكون عملية طويلة يمكنك انتظار التحديثات ليتم تنفيذها بواسطة خدمة النسخة الأصلية باستخدام الخيار /queue. للحصول على مزيد من المعلومات حول الخيار /queue و أولويات التثبيت راجع خدمة الصورة الأصلية.

ngen update /queue

إلغاء تثبيت النسخ

يحتفظ Ngen.exe بقائمة من التبعيات، بحيث تتم إزالة المكونات المشتركة عند إزالة كل التجميعات التي تعتمد عليها. بالإضافة إلى ذلك، لا تتم إزالة المكون المشترك إذا تم تثبيته كجذر.

يقوم الأمر التالي بإلغاء تثبيت كل السيناريوهات للجذر ClientApp.exe:

ngen uninstall ClientApp

يمكن إستخدام الإجراء uninstall لإزالة وحدات السيناريو المحددة. يقوم الأمر التالي بإلغاء تثبيت كل سيناريوهات التصحيح ل ClientApp.exe:

ngen uninstall ClientApp /debug
ملاحظةملاحظة

إزاله تثبيت السيناريوهات /debug لا تزيل تثبيت السيناريو الذي يتضمن كل من /profile و /debug.

يقوم الأمر التالي بإلغاء تثبيت كل السيناريوهات لإصدار محدد من ClientApp.exe:

ngen uninstall "ClientApp, Version=1.0.0.0"

الأوامر التالية تزيل تثبيت كل السيناريوهات ل "ClientApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL", أو فقط سيناريو التصحيح لذلك التجميع:

ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral, 
  PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral, 
  PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL" /debug

كما مع الإجراء install , تزويد ملحق يتطلب إما تنفيذ Ngen.exe من الدليل الذي يحتوي على التجميع أو تحديد المسار الكامل.

للحصول على أمثلة تتعلق بخدمة النسخ الأصلية, راجع خدمة الصورة الأصلية.

راجع أيضًا:

المرجع

موجه أوامر Visual Studio.

المبادئ

خدمة الصورة الأصلية

عملية تنفيذ المدارة

كيفية تحديد وقت التشغيل مواقع التجميعات

موارد أخرى

أدوات .NET Framework