الموارد في ملف المشروع في VS2008 يحصل على "إعادة استخدامها" خلاق مصمم النموذج، ممكن لتجنب؟

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

سؤال

لدينا بعض ملفات الموارد الذي تم إنشاؤه تلقائيا في مشروعنا في Visual Studio 2008، مع بعض الإصدارات المترجمة، وفي واحدة من هذه الإصدارات المترجمة، هناك سلسلة الذي فارغ في هذه القضية.

وأكثر وضوحا. لدينا ملف الموارد الأساسية، مع الكثير من موارد السلسلة. لن يكون لدينا 4 إصدارات مترجمة أخرى من thisfile، وفي واحدة من هذه الملفات محلية أخرى، وتعطى واحدة من سلاسل قيمة فارغة.

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

وعلى سبيل المثال، إذا كان لسبب لم يتم تحديد خاصية على السيطرة مع قيمة افتراضية (لذلك سيتم إجراء تسلسل إلى رمز حتى لو كان فارغا)، بعد ذلك سوف مرجع مواردنا بدلا من كتابة خارج سلسلة فارغة حرفي في C # رمز.

والمشكلة هي أنه يرجع إصدارات مترجمة، وهذه ليست ترجمة التعليمات البرمجية.

وهنا مثال كود مختصر:

this.rpAllFields.KeyTip = 
  global::namespaces.SystemMessagesResources_sv_SE.
    dash_red_shift_info_description;

في هذه الحالة، dash_red_shift_info_description لا يكون لها قيمة للغة SV-SE، وبالتالي فإن مصمم، عندما ترى سلسلة فارغة في القانون، ومحاولة ربط ذلك المورد. ولكن SystemMessagesResources_sv_SE ليس فئة القائمة، ولكن على ما يبدو اسم الفئة التي تم إنشاؤها لإصدار مترجم السويدية ملف المورد SystemMessagesResources، الذي <م> هو ترجمة لفئة.

هل هذا ممكن لتجنب؟ نحن تعبوا بدلا من البحث / استبدال كل مرة نغير شيئا في ملفات النموذج، ونحن واثقون تماما هناك صفعة بلدي boneheaded-الجبهة-شيء فعلناه التي تجعل هذا يحدث، ولكن نحن أبارينتلي غير قادرة على العثور على سبب هذا أنفسنا.

وسيكون رمز أعلاه، إذا أزلنا الموارد، وقراءة مثل هذا:

this.rpAllFields.KeyTip = "";
هل كانت مفيدة؟

المحلول

وكنت قد تحاول خلق empty_string مورد سلسلة، الذي يعرف بأنه "" لكل لغة. اذا كنت تجعل من المورد الأول، مصمم النموذج سوف (أمل) اختيار دائما أن واحدا كقيمة أن يرش من خلال النماذج الخاصة بك. بهذه الطريقة على الأقل عليك أن تكون باستخدام سلسلة مخصصة لهذا الغرض.

نصائح أخرى

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

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

ولكن إذا كان السيناريو MY لا شيء من هذا القبيل، وأنا مجرد الغاء دخول المورد مع سلسلة فارغة. انا اقول فقط: "ماذا مستقل يترجم النص UI إلى فارغة، على أي حال؟".

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

ولدت ملف الموارد ونموذج التعليمات البرمجية ستكون جيدة.

وما تقوله هو: لديك سلسلة تعريف الحرفي فارغة في مساحة الاسم الخاص بك (وجدت أول واحد) ولكن الذي يسبب بعض المشاكل؟ لن يكون فارغا في كل الأوقات؟ عند ترجمة code- أنه يفعل أشياء غريبة مثل هذا لتوفير مساحة. جريت إلى مشكلة مشابهة عند إنشاء ملفات XAML مع codebehind لعلى ذبابة بناء الآلي من الملفات التجميع: المترجم ذكي بما فيه الكفاية لأعرف "أنها لا تحدث فرقا ولكن بالنسبة لنا فعلت لأنها تسمية الحرفية (التي كانت تستخدم في مكان آخر).

لكمحاولة للتغلب على هذه استخدمنا أنواع يدعى لهذه الأوليات في مساحة لدينا وجعل أن واحدا العالمية. ما أراه هنا هو أن مساحة العمومي هو ملء في blanks- قد ترغب أن يكون واحدا "أدناه" الذي يقوم بتقييم كافة السلاسل فارغة.

وأنا لم تكن قد عملت مع هذا منذ أكثر من عام فاغفر لي إذا كان لي صياغة رديئة، ولكن ما أعنيه هو: أعتقد XML. تحتاج إلى استخدام إما صراحة مساحة الاسم في خصائص أو التنازل عنها أقل (مثل الملكية تعلق في XAML).

وآمل أن يساعد هذا (والمنطقي)

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