2011-12-15 16 views
6

में .NET उपग्रह असेंबली को तैनात करना मैं एक सी # .NET अनुप्रयोग पर काम कर रहा हूं और मैं संसाधन फ़ाइलों के साथ स्थानीयकरण कर रहा हूं। मेरे पास संस्कृति विशिष्ट संसाधन फ़ाइलें हैं जैसे:विशिष्ट फ़ोल्डर

  • MyResource.resx;
  • MyResource.fr-FR.resx;
  • MyResource.ja-JP.resx;

निर्माण के बाद, आवेदन रूट फ़ोल्डर में वहाँ fr-FR, ja-JP और इतने पर जैसे फ़ोल्डर हैं।

क्या सभी स्थानीयकरण संसाधन फ़ाइलों और फ़ोल्डर्स को उसी फ़ोल्डर में स्थानांतरित करना संभव है, उदाहरण के लिए Languages?

अद्यतन 1:

मैंने इसे नीचे दिए गए कोड के साथ हल किया। ऐसा लगता है कि जब मैं एप्लिकेशन को किसी अन्य स्थान पर कॉपी करता हूं, तो यह संसाधन लोड नहीं कर सकता है। जैसा कि मैं देख सकता हूं, application.config फ़ाइल भी वहां होने की आवश्यकता है। और अगर मैं app.config को एम्बेड किए गए संसाधन के रूप में बना देता हूं, तो यह काम नहीं करता है।

क्या कोई तरीका है, इसे उसी निर्देशिका में आवश्यक .config फ़ाइल के बिना कैसे बनाया जाए?

धन्यवाद

+0

क्या यह एक लाइब्रे प्रोजेक्ट है, उदाहरण के लिए dll? – Remy

+0

नहीं, यह डेस्कटॉप एप्लिकेशन है। – KristijanSharp

उत्तर

7

डिफ़ॉल्ट रूप से उपग्रह विधानसभाओं सीधे निष्पादन योग्य फ़ाइल नीचे उप-निर्देशिका में रखा जाता है। आप एक ही फ़ोल्डर Languages में अन्य संस्कृतियों के लिए सभी fr-FR, ja-JP और शेष फ़ोल्डरों ले जाना चाहते हैं तो आप आवेदन विन्यास फ़ाइल में निम्न प्रविष्टि जोड़कर यह कर सकते हैं:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="Languages"/> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

यह इंगित करेगा कि जब के लिए खोज विधानसभाओं को सीएलआर को probing तत्व privatePath विशेषता द्वारा निर्दिष्ट निर्देशिकाओं या निर्देशिकाओं में भी डिफ़ॉल्ट स्थानों में खोजना चाहिए। आप एप्लिकेशन निष्पादन योग्य फ़ाइल के नीचे मौजूद किसी भी निर्देशिका निर्दिष्ट कर सकते हैं। एक से अधिक उप-निर्देशिका निर्दिष्ट करते समय आपको अर्धविराम के साथ प्रत्येक को सीमित करने की आवश्यकता होती है।

+0

धन्यवाद। अब यह काम कर रहा है। – KristijanSharp

1

गुण के तहत मेरे resx फ़ाइलों में नीचे हैं:

मैं आवेदन विन्यास फाइल में रनटाइम जानकारी डाल जैसा कि ऊपर वर्णित

  • Resources.resx
  • Resources.tr-TR.resx लेकिन कोई परिवर्तन नहीं होता है। अभी भी निष्पादन योग्य पथ के तहत एक tr-TR फ़ोल्डर बनाना, भाषा फ़ोल्डर के अंतर्गत नहीं। क्या संभवतः मैं यहाँ गलत कर रहा हूँ? धन्यवाद

    <configuration> 
    ... 
    <runtime> 
    ... 
    </runtime> 
    </configuration> 
    
+0

आपको फ़ोल्डर को स्वयं स्थानांतरित करने की आवश्यकता है (मैंने इसे पोस्ट-बिल्ड चरण के साथ किया था)। आपकी कॉन्फ़िगरेशन सेटिंग्स में संपादन केवल यह नियंत्रित करता है कि अतिरिक्त असेंबली कैसे खोजी जाती हैं, न कि उन्हें कहां लिखा जाता है। – Seanba

संबंधित मुद्दे