قد تتلقى رسالة خطأ "System.Resources.MissingManifestResourceException" عند الوصول إلى ملف.resources النموذج في وقت التشغيل

الأعراض

عندما تقوم بتشغيل Visual Basic.NET أو 2005 Visual Basic أو Visual C#.NET أو تطبيق Windows Visual J#.NET، قد تتلقى رسالة الخطأ التالية أو واحدة مماثلة عندما تقوم بتحميل نموذج:
حدث استثناء غير معالج من النوع 'System.Resources.MissingManifestResourceException' في mscorlib.dll

معلومات إضافية: تعذر العثور على أية موارد مناسبة للثقافة المحددة (أو الثقافة المحايدة) في التجميع المحدد. تأكد من أن "Form1.resources" تم بشكل صحيح تجميع مضمن أو مرتبط في "myApplication".

baseName: لوكاتيونينفو Form1: اسم ملف المورد WindowsApplication4.Form1: الجمعية Form1.resources: myApplication، الإصدار = 1.0.781.33026، الثقافة = محايد, = null
إذا نقرت فوق فاصل في مربع حوار الخطأ، وإذا كان يتم تشغيل التعليمات البرمجية في بيئة التطوير المتكاملة (IDE)، اكتشفت أن سطر من التعليمات البرمجية داخل عبارة InitializeComponent يسبب هذه المشكلة. على سبيل المثال، إذا قمت بإنشاء النموذج من قسم "مزيد من المعلومات"، يحدث هذا الخطأ بالاقتران مع عنصر تحكم ImageList . على الرغم من أنه قد تشير رسالة الخطأ إلى عنصر تحكم آخر، لاحظ تلك الموارد. GetObject يظهر على هذا السطر من التعليمات البرمجية في رسالة الخطأ:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

السبب

تحدث هذه المشكلة لأن فئة النموذج غير الفئة الأولى في الوحدة النمطية للتعليمات البرمجية للنموذج.

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

الحل

لحل هذه المشكلة، نقل كافة تعريفات الفئات الأخرى بحيث تظهر بعد تعريف فئة النموذج.

الحل البديل

للتغلب على هذه المشكلة، تغيير خاصية اسم ملف الموارد .resX ملف المشروع. للقيام بذلك، اتبع الخطوات التالية:
  1. بدء تشغيل Visual Studio.NET 2003 أو Visual Studio 2005.
  2. افتح المشروع الذي يحتوي على فئة النموذج المترجمة حيث تلقي رسالة الخطأ المذكورة في قسم "الأعراض".
  3. في "مستكشف الحلول"، قم بتوسيع كافة المجلدات.
  4. انقر نقراً مزدوجاً فوق Form1.resX، ومن ثم انقر فوق خصائص.
  5. في مربع الحوار صفحات الخصائص Form1.resX ، توسيع خصائص تكوين، ومن ثم انقر فوق عام ضمن الموارد المدارة.
  6. تغيير خاصية اسم ملف المورد من $ (إينتدير)/ < نائب > . Form1.resources $ (إينتدير)/< نائب >. موارد MyForm ، ثم انقر فوق موافق.

    ملاحظة: MyForm عنصرا نائبا لاسم الفئة فئة النموذج التي قمت المترجمة.
  7. اضغط CTRL + SHIFT + S لحفظ المشروع. اضغط على CTRL + SHIFT + B بناء الحل. للحصول على مزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

    إصلاح 824495 : ظهور رسالة خطأ "MissingManifestResourceException" عند إضافة مورد مرتبط في Visual Studio.NET 2003

  8. اضغط F5 لتشغيل التطبيق. يتم تشغيل التطبيق و Form1 يتم عرض النموذج.
.

الحالة

يعتبر هذا السلوك حسب التصميم.

مزيد من المعلومات

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

عند تحميل النموذج في وقت التشغيل، قد يكون أسلوب InitializeComponent الحصول على الكائنات من ملف.resources. InitializeComponent للبحث عن ملف.resources Form_Nameفي الجمعية العامة. لأن الأولى
Form_Nameملف.resources عدم إنشاء أو ربط بالتجميع، تفشل محاولة استرداد ملف.resources.

خطوات إعادة إنشاء المشكلة

  1. إنشاء مشروع تطبيق Windows أو في 2005 Visual Basic أو Visual C#.NET Visual J#.NET في Visual Basic.NET. يتم إنشاء Form1 افتراضياً. ملاحظة: في Visual Studio 2005، تتلقى رسالة التحذير التالية:
    لا يمكن إضافة المكونات في وضع الترجمة. حدد (الافتراضي) في خاصية "اللغة" للعودة إلى النموذج الافتراضي وإضافة المكونات.
    ملاحظة: يجب تغيير التعليمات البرمجية في Visual Basic 2005. بشكل افتراضي، Visual Basic إنشاء ملفين للمشروع عند إنشاء مشروع Windows Forms. إذا تم تسمية النموذج Form1، الملفين تمثل النموذج تسمية Form1.vb و Form1.Designer.vb. كتابة التعليمات البرمجية في الملف Form1.vb. مصمم نماذج Windows بكتابة التعليمات البرمجية في ملف Form1.Designer.vb. مصمم نماذج Windows يستخدم الكلمة الأساسية الجزئية لتقسيم تطبيق Form1 إلى ملفين مستقلين. يمنع هذا السلوك التعليمة البرمجية التي تم إنشاؤها من قبل مصمم يتم interspersed مع التعليمات البرمجية الخاصة بك.

    لمزيد من المعلومات حول التحسينات لغة Visual Basic 2005 جديد، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:

    لمزيد من المعلومات حول فئات جزئية ومصمم نماذج Windows، قم بزيارة موقع Msdn التالي:

  2. إضافة عنصر تحكم ImageList إلى Form1.
  3. إضافة ملف رمز إلى عنصر التحكم ImageList .
  4. في الوحدة النمطية البرمجية Form1، أضف التعليمات البرمجية التالية قبل تعريف Form1: Visual Basic.NET:
    Public Class someClassEnd Class

    .NET visual C# و Visual J#.NET:
    public class someClass{
    }

  5. إنشاء المشروع. لاحظ أن بناء المشروع بنجاح.
  6. قم بتشغيل المشروع. لاحظ أن تتلقى رسالة الخطأ المذكورة في قسم "الأعراض".
خصائص

رقم الموضوع: 318603 - آخر مراجعة: 19‏/01‏/2017 - المراجعة: 2

تعليقات