مشاركة عبر


استرداد الموارد في التجميعات التابعة

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

الـ ResourceManager يحدد الموارد الواجب استردادها استناداً إلى الخاصية CultureInfo.CurrentUICulture الخاص بمؤشر الترابط الحالي. على سبيل المثال، إذا تم تحويل تطبيق برمجياً بالموارد الافتراضية للغة الإنجليزية و اثنين من التجميعات التابعة التي تحتوي على موارد للفرنسية و موارد اللغة الألمانية و تم تعيين الخاصية CurrentUICulture إلى "de" ، يقوم ResourceManager باسترداد الموارد الألمانية. للحصول على مزيد من المعلومات حول كيفية تعيين الخاصية CurrentUICulture، راجع استخدام الخاصية CurrentUICulture .

يستخدم المثال التالي الأسلوب ResourceManager.GetString لاسترداد و عرض مورد سلسلة.

…
Dim private rm As ResourceManager
rm = New ResourceManager("MyStrings", Me.GetType().Assembly)
Console.Writeline(rm.GetString("string1"))
…
…
private ResourceManager rm;
rm = new ResourceManager("MyStrings", this.GetType().Assembly);
Console.Writeline(rm.GetString("string1"));
…

تقوم هذه التعليمات البرمجية باسترداد و عرض string1 من الملف MyStrings. تعتمد السلسلة الفعلية التي يتم تحميلها على الخاصية CurrentUICulture الخاصة بمؤشر الترابط الحالي.

يستخدم المثال التالي الأسلوب ResourceManager.GetObject لاسترداد و عرض مورد ثنائي (مثل صورة رسومية).

…
Dim private rm As ResourceManager
rm = New ResourceManager("MyImages", Me.GetType().Assembly)
PictureBox.Image = Ctype(rm.GetObject("MyObject"), System.Drawing.Image)
…
…
private ResourceManager rm;
rm = new ResourceManager("MyImages", this.GetType().Assembly);
PictureBox.Image = (System.Drawing.Image)rm.GetObject("MyObject");
…

تقوم هذه التعليمات البرمجية بتحميل الكائن الذي يُسمى MyObject من ملف الموارد MyImages. يقوم بتسجيل MyObject إلى نوع صورة و يعيّنه إلى خاصية الصورة الخاصة بـ PictureBox. يعتمد الكائن الفعلي التي يتم تحميله على الخاصية CurrentUICulture الخاصة بمؤشر الترابط الحالي.

الفئة ResourceSet تقوم بتخزين كافة الموارد المترجمة لثقافة واحدة. ResourceSet لا تستخدم عملية العودة للمورد الاحتياطي. لذلك، تكون ResourceSet غير مفيدة في التطبيقات المترجمة.

دعم تعيين الإصدارات الخاصة بالتجميعات التابعة

بشكل افتراضي، عندما يسترد ResourceManager الموارد المطلوبة فإنه يبحث عن التجميعات التابعة بأرقام الإصدارات التي تطابق رقم الإصدار للتجميع الرئيسي. بعد أن تقوم بنشر تطبيق، قد تحتاج إلى تحديث التجميع الرئيسي أو التجميع التابع أو تجميعات تابعة لموارد محددة. يقوم .NET Framework بتوفير دعم تعيين إصدار التجميع الرئيسي و التجميعات التابعة.

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

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

لإتاحة الدعم الكامل لتعيين إصدار التجميع، من المستحسن أن تقوم بنشر التجميعات قوية المسمى في مخزن التجميع العمومي المؤقت و نشر التجميعات بدون أسماء قوية في دليل التطبيق. إذا كنت تريد نشر تجميعات قوية المسمى في دليل التطبيق، لن تتمكن من زيادة رقم إصدار التجميع التابع عندما تقوم بتحديث التجميع. بدلاً من ذلك، يجب إجراء تحديث في المكان ذاته، حيث تقوم باستبدال التعليمات البرمجية الموجودة بالتعليمات البرمجية المحدثة و الاحتفاظ بنفس رقم الإصدار. على سبيل المثال، إذا كنت تريد تحديث إصدار 1.0.0.0 لتجميع تابع باسم التجميع المحدد بشكل كامل: "myApp.resources, Version=1.0.0.0, Culture=de, PublicKeyToken=b03f5f11d50a3a"، قم بكتابة myApp.resources.dll المحدث فوقه الذي تم تحويله برمجياً بنفس اسم التجميع المحدد بشكل كامل "myApp.resources, Version=1.0.0.0, Culture=de, PublicKeyToken=b03f5f11d50a3a". لاحظ أن لأنه لا يمكن زيادة رقم الإصدار، استخدام التحديثات في نفس المكان على ملفات التجميع التابع يجعل من الصعب على تطبيق أن يحدد بدقة إصدار التجميع التابع.

للحصول على معلومات إضافية حول تعيين إصدار التجميع ، راجع تعيين إصدار التجميع و كيف يحدد وقت التشغيل موقع التجميعات .

راجع أيضًا:

المرجع

ResourceManager

المبادئ

الموارد في التطبيقات

حزم و نشر الموارد

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

استرداد الموارد في ملفات .Resources