سؤال

لدي مشروع ويب يعمل في VS 2008.لدينا بعض ملفات الموارد العالمية (*.resx) في مجلد App_GlobalResources للتدويل.كل هذا يعمل مثل السحر على تثبيت IIS المحلي الخاص بي خارج VS.

ولكن عندما أنشر مشروع الويب الخاص بي على نظام الملفات المحلي و/أو خادم آخر، لم يعد من الممكن العثور على جميع الموارد.لذلك أعتقد أن التجميع المسبق يفسد الأشياء بطريقة ما.عندما أقوم باستدعاء الويب المترجم مسبقًا، أحصل على خطأ مفاده أنه لا يمكن العثور على كائن المورد الذي يحتوي على المفتاح xyz، على الرغم من أنه كان من الممكن العثور عليه من قبل.

لقد تحققت مع عاكس .NET مما إذا كانت عناصر الموارد قد وصلت إلى ملفات *.dlls.كل هذه المعرفات موجودة (bin/Web.dll، bin/<culture>/Web.resources.dll).يتم تحميل المعرفات مثل هذا:

<asp:MenuItem NavigateUrl="~/OrderNew.aspx" Text="<%$ Resources:MyProject, MenuNewOrder %>" Value="NewOrder">

يُطلق على ملفات الموارد اسم MyProject.resx وMyProject.<culture>.resx حيث تتوافق <culture> مع الثقافة المحددة (أي الثقافة).MyProject.de-DE.resx).

هل توجد أية أفكار لحل هذا؟

أنا حقا أقدر أي مساعدة.

شكرًا

يحرر:

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

ما زلت مهتمًا بحل المشكلة "بالطريقة الصحيحة".

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

المحلول

واجهت نفس المشكلة واضطررت إلى إجراء تغييرين على خصائص ملف resx.

  1. اضبط "إجراء البناء" على المحتوى
  2. قم بتعيين "نسخ إلى دليل الإخراج" على النسخ دائمًا

نصائح أخرى

(لا أستطيع التعليق على الإجابة السابقة...لا توجد سمعة بعد...؟)

أخشى أن هذا لم يحل مشكلتي.

عند تجربة الحل "المحتوى/النسخ دائمًا" أحصل على استثناء يفيد بأن الارتباط في وقت الترجمة لم يعمل.

لماذا يحتاج asp.net إلى ملف resx عندما يتم تجميع الموارد!؟

حدث لي هذا الخطأ عند نسخ ملف مورد من مشروع آخر.

لقد قمت بحل هذه المشكلة عن طريق حذف المورد العالمي وإضافة مورد جديد ونسخ ملف data العناصر من القديم إلى XML الجديد.

وينتج عن هذا الإعدادات التالية للمورد:

  <ItemGroup>
    <Content Include="App_GlobalResources\Global.resx">
      <Generator>GlobalResourceProxyGenerator</Generator>
      <LastGenOutput>Global.Designer.cs</LastGenOutput>
    </Content>
  </ItemGroup>

كان لي نفس القضية.عندما قمت بنشر تطبيقي على Small Business Server (SBS2008)، كان عالقًا في سطر اسم التحكم ولكن في الواقع في جزء meta:resourcekey منه.ساعدني غير الحل المذكور أعلاه.

لقد أمضيت 6 ساعات في اكتشاف ذلك، وأخيرًا أدركت أن هذا حدث عندما قمت بتنظيف المجلدات على الخادم.في البداية كانت جميع تطبيقاتي موجودة على E:في مجلداتهم ولكن بعد ذلك قمت بإنشاء مجلدات بأسماء تشير إلى التطبيقات ApplicationPools وأقوم بنقل التطبيقات المقابلة هناك.

لا أعرف كيف يبحث IIS7 على SBS عن ملفات الموارد ولكن بالتأكيد كانت هذه هي المشكلة.عندما أعود بتطبيقاتي إلى E:مرة أخرى بدأ كل شيء يعمل مثل السحر.

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