Ilasm.exe ( المجمع MSIL)

يقوم MSIL بإنشاء ملف تنفيذي محمول (PE) من اللغة المتوسطة ل MSIL) Microsoft) لمزيد من المعلومات حول MSIL، راجع عملية تنفيذ المدارة.) يمكنك تشغيل الملف التنفيذي الناتج الذي يحتوي على MSIL وبيانات التعريف المطلوبة ، لتحديد ما إذا كان MSIL يعمل كما هو متوقع.

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

ilasm [options] filename [[options]filename...]

المعلمات

الوسيطة

الوصف

filename

اسم ملف المصدر il.. هذا الملف يتألف من توجيهات تعريف بيانات التعريف و إرشادات MSIL الرمزية. يمكن توفير وسائط ملف مصدر متعددة لإنتاج ملف PE واحد مع Ilasm.exe.

ملاحظةملاحظة
تأكد من أن السطر الأخير من التعليمات البرمجية في ملف مصدر il. يحتوي على مسافة زائدة أو على حرف إنهاء السطر.

الخيار

الوصف

/alignment=عدد صحيح

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

/base=عدد صحيح

تعين ImageBase إلى القيمة المحددة بواسطة عدد صحيح في عنوان NT الاختياري. إذا تم تعيين التوجيه imagebase IL. في الملف, هذا الخيار يكتب فوقه.

/clock

تقيس و ترسل التقارير أوقات التحويل البرمجي التالية بالمللي ثانية لملف المصدر il. المحدد:

التشغيل الإجمالي: إجمالي الوقت المنقضي لتنفيذ كل العمليات المعينة التي تتبع.

بدأ التشغيل: تحميل وفتح الملف.

تجاهل MD: تجاهل بيانات التعريف.

حل مشكلة Ref to Def : حل مراجع إلى التعريفات في الملف.

إنشاء ملف CEE: إنشاء نسخة الملف في الذاكرة.

كتابة ملف PE : كتابة النسخة إلى ملف PE.

/debug[=IMPL|OPT]

يتضمن معلومات التصحيح (أسماء المتغير المحلي و الوسيطة و أرقام الأسطر). تنشىء ملف PDB.

/debug بدون قيمة إضافية يعطل أمثلية JIT ويستخدم نقاط تسلسل من ملف PDB.

IMPL تعطل أمثلية JIT وتستخدم نقاط تسلسل ضمنية.

OPT تمكن أمثلية JIT وتستخدم نقاط تسلسل ضمنية.

IMPL و OPT جديدة في NET Framework. الإصدار 2.0.

dll/

ينتج ملف إخراج dll..

/enc=file

ينشئ تحرير ومتابعة deltas من ملف المصدر المحدد.

هذه وسيطة للاستخدام الأكاديمي فقط وليست مدعمة للاستخدام التجاري.

جديد في الإصدار 2.0 لـ .NET Framework.

exe/

ينتج ملف تنفيذي كإخراج. هذا هو الإعداد الافتراضي.

/flags=عدد صحيح

يعين ImageFlags إلى القيمة المحددة بواسطة عدد صحيح في عنوان وقت تشغيل اللغة العامة. إذا تم تعيين التوجيه corflags IL. في الملف, هذا الخيار يكتب فوقه. راجع CorHdr.h , COMIMAGE_FLAGS لقائمة من القيم الصالحة لـ عدد صحيح.

/fold

تطوي النصوص الأساسية المتطابقة إلى واحدة.

جديد في الإصدار 2.0 لـ .NET Framework.

/include=includePath

يعين مسار للبحث عن الملفات المضمنة مع #include.

جديد في الإصدار 2.0 لـ .NET Framework.

/itanium

تحدد Intel Itanium كالمعالج الهدف.

إذا لم يتم تحديد تقييم بالبت للصورة , الافتراضي هو /pe64.

جديد في الإصدار 2.0 لـ .NET Framework.

/key:ملف المفتاح

تبرمج اسم الملف مع توقيع قوي باستخدام المفتاح الخاص الموجود في ملف المفتاح.

/key:@مصدر المفتاح

يترجماسم الملف بتوقيع قوي باستخدام المفتاح الخاص الذي تم إنشاؤه على مصدر المفتاح.

listing/

ينتج ملف سرد قائمة على الإخراج القياسي. إذا تجاهلت هذا الخيار, لا يتم إنشاء أي ملف سرد قائمة.

هذه المعلمة غير معتمدة في الإصدار 2.0 أو الإصدارات الأحدث من برنامج .NET Framework.

/mdv=versionString

تعين سلسة إصدار بيانات التعريف.

جديد في الإصدار 2.0 لـ .NET Framework.

/msv=major.minor

تعين إصدار دفق بيانات التعريف حيث major و minor يكونو أعداد صحيحة.

جديد في الإصدار 2.0 لـ .NET Framework.

/noautoinherit

تعطل التوريث الافتراضي من Object عندما لا يتم تحديد فئة أساسية.

جديد في الإصدار 2.0 لـ .NET Framework.

/nocorstub

يمنع إنشاء كعب الروتين CORExeMain.

جديد في الإصدار 2.0 لـ .NET Framework.

/nologo

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

/output:file.ext

تعيّن اسم و ملحق ملف الإخراج. بشكل افتراضي، اسم ملف الإخراج هو نفسه اسم ملف المصدر الأول. الملحق الإفتراضي هو exe.. إذا حددت الخيار /dll، الملحق الافتراضي هو dll..

ملاحظةملاحظة
تحديد/output: لا يعين myfile.dll الخيار /dll .إذا لم تقم بتعيين /dll، سيكون الناتج ملف تنفيذي يسمى myfile.dll.

/optimize

تختصر التعليمات الطويلة إلى قصيرة. على سبيل المثال، br إلى br.s

جديد في الإصدار 2.0 لـ .NET Framework.

/pe64

قم بإنشاء نسخة ٦٤ بت (+PE32).

إذا لم يتم تحديد معالج الهدف ,الافتراضي هو /itanium.

جديد في الإصدار 2.0 لـ .NET Framework.

/pdb

قم بإنشاء ملف PDB بدون تمكين تعقب معلومات التصحيح.

جديد في الإصدار 2.0 لـ .NET Framework.

/quiet

تحدد الوضع الهادئ; لا تقدم تقرير عن تقدم التجميع.

/resource:file.res

يتضمن ملف المورد المحدد في تنسيق *.res في ملف exe. أو ملف dll. الناتجين. يمكن تحديد ملف واحد فقط من res. مع خيار /resource.

/stack=stackSize

تعين القيمة SizeOfStackReserve في عنوان NT الاختياري إلى stackSize.

جديد في الإصدار 2.0 لـ .NET Framework.

/stripreloc

تعيّن أنه لا حاجة إلى إعادة تحديد مواقع أساسية

جديد في الإصدار 2.0 لـ .NET Framework.

/subsystem=عدد صحيح

تعين النظام الفرعي إلى القيمة المحددة بواسطة عدد صحيح في عنوان NT الاختياري. إذا تم تعيين توجيه subsystem IL. في الملف ، فإن الأمر يتجاوزه. راجع winnt.h , IMAGE_SUBSYSTEM لقائمة من القيم الصالحة لـ عدد صحيح.

/x64

تحدد معالج 64 بت AMD كالمعالج الهدف.

إذا لم يتم تحديد تقييم بالبت للصورة , الافتراضي هو /pe64.

جديد في الإصدار 2.0 لـ .NET Framework.

/?

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

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

إن كافة الخيارات لـ Ildasm.exe حساسة لحالة الأحرف و يعترف بها حسب الأحرف الثلاثة الأولى,على سبيل المثال، /lis مكافئة ل /listing و /res:myresfile.res مكافئة ل /resource: myresfile.res.و إن الخيارات التي تقوم بتعيين الوسائط تقبل بإما نقطتين (:) أو إشارة المساواة (=) كفاصل بين الخيار و الوسيطة,على سبيل المثال، /output:file.ext مكافىء ل /output=file.ext.

ملاحظات

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

كبقية المترجمين الذين يستهدفو وقت التشغيل، مثل# C وIlasm.exe, Visual Basic لا ينتج ملفات الكائن المتوسطة و لا يتطلب مرحلة إضافة ارتباطات لتكوين ملف PE.

يمكن للمجمع MSIL التعبير عن كل بيانات التعريف و الميزات الموجودة للغات البرمجة التي تستهدف وقت التشغيل. يسمح ذلك للغات البرمجة المدارة المكتوبة في واحد من هذه اللغات ليتم التعبير عنها بشكل ملائم في مجمع MSIL و ترجمتها مع Ilasm.exe.

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

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

يمكنك استخدام Ilasm.exe بالاقتران مع أداة الدليل الخاصة به ,Ildasm.exe. يأخذ Ildasm.exe ملف PE الذي يحتوي على تعليمات برمجية MSIL و ينشىء ملف نصي مناسب كإدخال إلى Ilasm.exe. و يكون هذا مفيداً على سبيل المثال, عند ترجمة التعليمات البرمجية في لغة البرمجة التي لا تدعم كافة سمات بيانات التعريف لوقت التشغيل, و بعد ترجمة التعليمات البرمجية و تشغيل الإخراج الخاص به خلال Ildasm.exe فإنه يمكن تحرير الملف النصي الناتج لـ MSIL يدوياً لإضافة السمات المفقودة, و من ثم يمكنك تشغيل هذا الملف النصي خلال Ilasm.exe لإنتاج ملف قابل للتنفيذ نهائي.

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

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

حالياً لا يمكنك استخدام هذه التقنية مع ملفات PE التي تتضمن تعليمات برمجية مضمنة (على سبيل المثال، ملفات PE المنتجة بواسطة ++Visual C).

لجعل هذا الاستخدام المدمج ل Ildasm.exe و Ilasm.exe دقيق قدر الامكان, التجميع لا ينفذ بعض الإختصارات البسيطة — لا ما إذا يجب استخدام تنسيقات طويلة أو قصيرة من الإرشادات. على سبيل المثال، الأداة لا تحاول تحديد ما إذا كان يمكنها استبدال ترميز قصير لواحد طويل قد قمت بكتابتة في المصادر MSIL الخاصة بك (أو التي يمكن تجاهلها بواسطة برنامج تحويل برمجي آخر). إذا كنت تريد الترميز القصير, يجب عليك كتابة ذلك النموذج بشكل واضح. على الرغم من ذلك، المجمع يتحقق من الشروط الخارجة عن النطاق حيث ممكن.

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

إن Ildasm.exe يعمل فقط على ملفات على القرصلكنه لا يعمل على الملفات المثبتة في مخزن التجميع العمومي المؤقت.

لمزيد من المعلومات حول نحو MSIL راجع ملف asmparse.grammar في ال عدة تطوير برامج Windows (SDK).

أمثلة

لأمر التالي يجمع الملف MSIL myTestFile.il و يُنشئ الملف myTestFile.exe. التنفيذي.

ilasm myTestFile

يقوم الأمر التالي بجمع الملف MSIL myTestFile.il و يُنشئ ملف dll. myTestFile.dll.

ilasm myTestFile /dll 

يقوم الأمر التالي بجمع الملف MSIL myTestFile.il و يُنشئ ملف dll. myNewTestFile.dll.

ilasm myTestFile /dll /output:myNewTestFile.dll

مثال التعليمات البرمجية التالي يظهر تطبيق بسيط للغاية الذي يعرض "مرحباً عالم!" إلى وحدة التحكم. يمكنك تحويل هذه التعليمات برمجياً ومن ثم استخدم الأداة Ildasm.exe لإنشاء ملف MSIL.

using System;
public class Hello
{
    public static void Main(String[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

مثال التعليمات البرمجية MSIL التالي يناظر مثال تعليمات برمجية #C السابق. ويمكنك ترجمة هذه التعليمة البرمجية في تجميع باستخدام الأداة Ilasm.exe ( المجمع MSIL). كل من أمثلة التعليمات الربمجية MSIL و #C تعرض "مرحباً عالم!" إلى وحدة التحكم.

// Metadata version: v2.0.50215
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly sample
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module sample.exe
// MVID: {A224F460-A049-4A03-9E71-80A36DBBBCD3}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x02F20000


// =============== CLASS MEMBERS DECLARATION ===================

.class public auto ansi beforefieldinit Hello
       extends [mscorlib]System.Object
{
  .method public hidebysig static void  Main(string[] args) cil managed
  {
    .entrypoint
    // Code size       13 (0xd)
    .maxstack  8
    IL_0000:  nop
    IL_0001:  ldstr      "Hello World!"
    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_000b:  nop
    IL_000c:  ret
  } // end of method Hello::Main

  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    // Code size       7 (0x7)
    .maxstack  8
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0006:  ret
  } // end of method Hello::.ctor

} // end of class Hello

راجع أيضًا:

المرجع

Ildasm.exe (المفكك MSIL)

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

المبادئ

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

موارد أخرى

أدوات .NET Framework