मेरे पास कुछ संसाधन (इस मामले में छवियां) संसाधन फ़ाइल में हैं जो मैं अपने विंडोज फॉर्म प्रोजेक्ट में नियंत्रणों पर उपयोग करता हूं। विजुअल स्टूडियो रिसोर्स सिलेक्शन डायलॉग को संसाधन फ़ाइलों से छवियों को चुनने के लिए बहुत अच्छा समर्थन नहीं है जब तक कि वे विशिष्ट स्थानों पर न हों, लेकिन आप डिज़ाइनर फ़ाइल को सीधे संपादित कर सकते हैं, और यह ठीक काम करता है; एप्लिकेशन संकलित करता है और सही ढंग से चलता है, और विंडोज फॉर्म डिज़ाइनर मेरे हाथ से संपादित कोड को गड़बड़ करने के लिए पर्याप्त स्मार्ट नहीं है।बाहरी असेंबली से संसाधनों का उपयोग करने के लिए मैं विंडोज फॉर्म डिज़ाइनर कैसे प्राप्त करूं?
// in an assembly named ResourceConsumer
this.button1.Image = global::ResourceConsumer.Properties.Resources.Close32x32;
अब मैं उन संसाधनों को बाहरी असेंबली में ले जाना चाहता हूं ताकि उन्हें कई अनुप्रयोगों द्वारा उपयोग किया जा सके। मैं बिना किसी समस्या के अपने संसाधनों का पर्दाफाश करने के लिए एक असेंबली स्थापित कर सकता हूं (जब तक मैं विजुअल स्टूडियो 2008 या बाद में उपयोग कर रहा हूं), और यह ठीक काम करता है। जब मैं अपने नए स्थान से छवि को संदर्भित करने के लिए डिज़ाइनर कोड बदलता हूं, तो कोड संकलित करता है और सही ढंग से चलता है, लेकिन जब भी यह कोड उत्पन्न करता है तो विंडोज फॉर्म डिज़ाइनर मेरे कोड को बदलता है; यह स्थानीय संसाधन फ़ाइल में छवि की बाइनरी को एम्बेड करता है और वहां से संदर्भ देता है।
// ResourceProducer is an external assembly containing resources
this.button1.Image = global::ResourceProducer.Properties.Resources.Exit32x32;
करने के लिए Windows फार्म डिजाइनर द्वारा बदल गई है:
this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
विण्डोज़ फॉर्म्स डिजाइनर एक ही विधानसभा के भीतर से एक संसाधन खींच को समझने के लिए लगता है, लेकिन नहीं एक बाहरी। क्या विंडोज फॉर्म डिज़ाइनर को बाहरी असेंबली से संसाधन का उपयोग करने का कोई तरीका है?
दरअसल, मैं डिजाइनर को इसका समर्थन करने के लिए वैसे भी नहीं ढूंढ पा रहा हूं, लेकिन जब आप कहते हैं कि "उपग्रह असेंबली के माध्यम से स्थानीयकरण काम नहीं करेगा?" हम कोड डुप्लिकेशन और स्थानीयकरण प्रयास को कम करने के लिए संसाधनों को मजबूत करना चाहते हैं; प्रत्येक परियोजना के बजाय एक बार संसाधन को शामिल करना और स्थानीयकरण करना आसान होगा। क्या इस मामले में संसाधन असेंबली के उपग्रह असेंबली के आधार पर स्थानीय संसाधनों को पुनर्प्राप्त नहीं किया जाएगा? यदि ऐसा है, तो हम अभी भी उन परियोजनाओं के लिए संसाधन असेंबली का उपयोग कर सकते हैं जिन्हें डिजाइनर समर्थन की आवश्यकता नहीं है। –