تأجيل توقيع تجميع

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

يمكنك استخدام توقيع مؤجل أو جزئي في وقت الإنشاء لحجز مساحة في ملف محمول قابل للتنفيذ (PE) من أجل توقيع الاسم القوي، ولكن تأجيل عملية التوقيع الفعلي في مرحلة ما لاحقة (عادةً قبيل شحن التجميع).

توضح الخطوات التالية تفاصيل عملية تأخير توقيع تجميع:

  1. أحصل على جزء المفتاح العمومي من المفتاح المزدوج للشركة التي سيتم بها توقيع النهائي. عادةً ما يكزن هذا المفتاح في شكل ملف .snk، والذي يمكن إنشاؤه باستخدام أداة Strong Name (Sn.exe) التي يوفرها عدة تطوير برامج Windows (SDK).

  2. لإضافة تعليقات للتعليمات البرمجية المصدرية من أجل التجميع باستخدام السمتان المخصصتان من System.Reflection:

    • AssemblyKeyFileAttribute ، والتي تقوم بتمرير اسم الملف الذي يحتوي علي المفتاح العمومي كمعلمة إلى المُنشئ الخاص به.

    • AssemblyDelaySignAttribute ، والذي يشير إلى أن تأخير التوقيع قيد الاستخدام بواسطة تمريرtrue كمعلمة إلي المُنشئ الخاص به. فعلى سبيل المثال:

          <Assembly:AssemblyKeyFileAttribute("myKey.snk")>
          <Assembly:AssemblyDelaySignAttribute(true)>
      
          [assembly:AssemblyKeyFileAttribute("myKey.snk")]
          [assembly:AssemblyDelaySignAttribute(true)]
      
  3. سيقوم المحول البرمجي بإدراج المفتاح العمومي في ملف بيان التجميع و يحجز المساحة في ملف PE من أجل توقيع الاسم القوي الكامل. يجب أن يتم تخزين المفتاح العمومي الحقيقي أثناء بناء التجميع، لكي يمكن التجميعات الأخرى التي تشير إلى هذا التجميع بالحصول على مفتاح لتخزين فيه مرجع التجميع الخاص بهم.

  4. ولأن التجميع لا يحتوي علي توقيع لاسم قوي صالح، فيجب إيقاف التحقق من هذا التوقيع. يمكنك القيام بذلك باستخدام الخيار –Vr من أداة Strong Name.

    يقوم المثال التالي بإيقاف عملية التحقق الخاصة بالتجميع المسمى myAssembly.dll.

    sn –Vr myAssembly.dll
    
    ملاحظة تنبيهتنبيه

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

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

    إذا كنت تستخدم تأجيل التوقيع أثناء التطوير باستخدام ‏‫Visual Studio تشغيل جهاز كمبيوتر 64 بت، و التحويل البرمجي تجميع ل CPU أي ، قد تحتاج إلى يطبق -Vrخيار مرتين.(في ‏‫Visual Studio، يتم CPU أي القيمة من خاصية بنية النظام الأساسي الهدف؛ عندما تقوم يحول برمجياً من سطر الأوامر، هو الإعداد الافتراضي.) إلى تشغيل تطبيق الخاص بك من سطر الأوامر أو من مستكشف Windows، قم باستخدام الإصدار 64 بت من Sn.exe (أداة الاسم القوي)إلى تطبيق -Vrخيار إلى التجميع.إلى تحميل تجميع في إلى ‏‫Visual Studio في وقت التصميم (على سبيل المثال، إذا يحتوي تجميع على المكونات التي يستخدمها تجميعات الأخرى في تطبيق الخاص بك)، استخدم الإصدار 32 بت من الاسم المميز إلى ol.Th هو هو لأن المحول البرمجي في نفس الوقت (JIT) تجميع التجميع إلى 64 بت الأصلية التعليمات البرمجية عند التجميع هو التعليمات البرمجية للتشغيل من سطر الأوامر، 32-بت الأصلي عند التجميع هو تحميله في بيئة وقت التصميم.

  5. لاحقاً، قبيل الشحن عادةً، يمكنك إرسال التجميع إلي مرجع التوقيع الخاص بمؤسستك من أجل توقيع الاسم القوي فعلياً باستخدام الخيار –R من الأداة Strong Name.

    يقوم المثال التالي بتوقيع تجميع يسمى myAssembly.dll باسم قوي باستخدام زوج المفاتيح sgKey.snk.

    sn -R myAssembly.dll sgKey.snk
    

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء زوج مفاتيح عام/خاص

المرجع

Sn.exe (أداة الاسم القوي)

المبادئ

إنشاء التجميعات

موارد أخرى

البرمجة مع التجميعات