هل هناك طريقة لجعل ملفات الموارد المكتوبة بقوة عامة (بدلاً من الملفات الداخلية)؟

StackOverflow https://stackoverflow.com/questions/140937

سؤال

إليك ما أود أن أفعله:

أرغب في إنشاء مشروع مكتبة يحتوي على ملفات الموارد الخاصة بي (على سبيل المثال، تسميات واجهة المستخدم وما إلى ذلك).أرغب بعد ذلك في استخدام مكتبة الموارد في واجهة المستخدم الخاصة بي وفي الاختبارات الخاصة بي.(أي أن يكون لدي مكان مشترك لمواردي التي أرجع إليها من مشاريع متعددة.)

لسوء الحظ، نظرًا لأن StronglyTypedResourceBuilder (فئة .Net التي تولد التعليمات البرمجية للموارد) تجعل ملفات الموارد داخلية بشكل افتراضي، لا يمكنني الرجوع إلى مواردي المكتوبة بقوة في المكتبة من مشروع آخر (على سبيل المثال، واجهة المستخدم أو الاختبارات الخاصة بي)، دون القفز من خلال الأطواق (أي شيء مشابه لما هو موضح هنا, ، أو كتابة فئة/وظيفة مجمعة عامة).

لسوء الحظ، يزيل هذان الحلان قدرتي على الاحتفاظ بالمراجع مكتوبة بقوة.

هل وجد أي شخص طريقة مباشرة لإنشاء موارد .Net مكتوبة بقوة والتي يمكن الرجوع إليها من مشاريع متعددة؟

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

هل كانت مفيدة؟

المحلول

لست متأكدًا من إصدار Visual Studio الذي تستخدمه، لذا سأضع خطوات لأي منهما:

VS 2008 - عند فتح ملف resx في عرض التصميم، يوجد خيار في الأعلى بجوار إضافة الموارد وإزالة الموارد، يسمى Access Modifier، وهو عبارة عن قائمة منسدلة حيث يمكنك تغيير التعليمات البرمجية التي تم إنشاؤها من داخلي إلى عام.

VS 2005 - ليس لديك خيار إنشاء التعليمات البرمجية كما في VS 2008.لقد كانت ميزة تمت إضافتها بسبب هذا الصداع.هناك عمل حولها بالرغم من ذلك.يمكنك استخدام مولد طرف ثالث مثل هذا أداة أو يمكنك استخدام الداخليةVisibleTo السمة في AssemblyInfo.cs الخاص بك لإضافة المشاريع التي سيكون لها حق الوصول إلى الفئات الداخلية لمكتبة الموارد الخاصة بك.

نصائح أخرى

يسمح لك Visual Studio 2008 بتحديد ما إذا كانت فئة الموارد التي تم إنشاؤها يجب أن تكون داخلية أو عامة.وهناك أيضا ResXFileCodeGeneratorEx, ، والذي يجب أن يفعل ذلك مع Visual Studio 2005.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top