2009-11-17 9 views
18

विजुअल स्टूडियो 2008 में GetGlobalResourceObject() का उपयोग करने के लिए मुझे विजुअल स्टूडियो के फ़ोल्डर App_GlobalResources में एक .resx फ़ाइल कॉपी करना होगा। एप्लिकेशन को प्रीकंपिल्ड करने के बाद, संसाधन फ़ाइलों को संबंधित उपग्रह असेंबली में संकलित किया जा रहा है और संस्कृति नामों द्वारा \bin\ फ़ोल्डर के तहत तैनात किया जा रहा है। यह सब ठीक काम करता है।एक पूर्व-संकलित तैनात वेबसाइट में उपग्रह असेंबली जोड़ें

हालांकि, एप्लिकेशन को प्रीकंपिल्ड होने के बाद मैं नई उपग्रह असेंबली जोड़ने में असमर्थ हूं। क्या मेरे द्वारा की गई थी:

  1. बनाया गया एक उपग्रह विधानसभा:

    resgen resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources अल/टी: lib/संस्कृति : es-ES /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll

  2. फ़ोल्डर \bin\es-ES\ बनाया और वहां .dll फ़ाइल को तैनात किया।

दुर्भाग्य से, नए जोड़े गए उपग्रह विधानसभा GetGlobalResourceObject(), जो डिफ़ॉल्ट (English) संसाधन के लिए वापस गिर जाता है द्वारा मान्यता प्राप्त किया जा रहा है। संसाधन फ़ाइल के साथ कुछ भी गलत नहीं लगता है क्योंकि अगर मैं उसी .resx फ़ाइल को App_GlobalResources में कॉपी करता हूं और फिर एप्लिकेशन को संकलित करता हूं, तो सबकुछ ठीक काम करता है।

मुझे क्या याद आ रही है? बीटीडब्ल्यू मेरा प्रोजेक्ट टाइप वेबसाइट है और वेब एप्लिकेशन प्रोजेक्ट नहीं है।

+1

क्या आपको कभी इस समस्या का समाधान मिला? – splattne

+1

वर्तमान में इस से बहुत अटक गया है। – Mig

+1

हमारे मामले में समस्या थी, उपग्रह पुनर्विक्रय के माध्यम से उपग्रह असेंबली उत्पन्न करते समय, नामस्थान पथ सही नहीं था। हमने आईएलडीएएसएमएम का उपयोग करके उत्पन्न उपग्रह डीएल को डबग किया, इसलिए हमने इसे सही किया और असेंबली को वापस तैनात कर दिया। – ksa

उत्तर

0

(@ksa द्वारा टिप्पणी से)

एक बात गलत हो सकता है कि DLL resgen द्वारा उत्पादन किया में एक गलत नाम स्थान पथ है, तो आप काम कर रहे DLLs और उत्पन्न में तुलना करने के लिए नामस्थान ILDASM या परावर्तक उपयोग कर सकते हैं डीएलएलएस काम नहीं कर रहा है। फिर आप सही नामस्थान के साथ उत्पन्न करने के लिए अपनी resgen कमांड लाइन बदल सकते हैं।

+0

सामुदायिक विकी के रूप में एक उत्तर के रूप में जोड़ें और जैसा कि ओपी ने टिप्पणी के लिए इस प्रश्न को अनुत्तरित करने के लिए एक टिप्पणी में उनके लिए तय किया है, मैं बस इसे फिर से लिख रहा हूं। –

0

AppDomain.CurrentDomain में असेंबली रिसोलव ईवेंट में शामिल होने का प्रयास करें और देखें कि यह वास्तव में असेंबली की तलाश में है या नहीं। यदि यह इसकी तलाश में है, तो आपको केवल गतिशील रूप से लोड असेंबली और उनके पथों की एक सूची रखना है।

विधानसभा के बारे में एक नोट, यदि आपके पास असेंबली नहीं है, तो शून्य वापस लौटें। यह डिफ़ॉल्ट व्यवहार है।

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