2008-09-26 11 views
22

यहां मैं यह करना चाहता हूं:क्या मजबूत टाइप की गई संसाधन फ़ाइलों को सार्वजनिक करने के लिए कोई तरीका है (आंतरिक के विपरीत)?

मैं एक पुस्तकालय प्रोजेक्ट बनाना चाहता हूं जिसमें मेरी संसाधन फ़ाइलें (यानी, यूआई लेबल और व्हाट्नॉट) शामिल हों। मैं फिर अपने यूआई और मेरे टेस्ट में संसाधन लाइब्रेरी का उपयोग करना चाहता हूं। (यानी, मूल रूप से मेरे संसाधनों के लिए एक आम जगह है जो मैं कई परियोजनाओं से संदर्भित करता हूं।)

दुर्भाग्यवश, क्योंकि स्ट्रॉन्गली टाइपेड रिसोर्सबिल्डर (नेट क्लास जो संसाधनों के लिए कोड उत्पन्न करता है) डिफ़ॉल्ट रूप से संसाधन फ़ाइलों को आंतरिक बनाता है, मैं ' किसी अन्य प्रोजेक्ट (यानी, मेरा यूआई या परीक्षण) से लाइब्रेरी में मेरे दृढ़ता से टाइप किए गए संसाधनों को संदर्भित करता है, बिना हुप्स के कूदते हुए (यानी, here का वर्णन करने वाले कुछ समान, या सार्वजनिक रैपर वर्ग/फ़ंक्शन लिखना)।

दुर्भाग्य से, दोनों समाधान दृढ़ता से संदर्भों को रखने के लिए मेरी क्षमता को हटा देते हैं।

क्या किसी को दृढ़ता से टाइप करने के लिए सीधे आगे बढ़ने का तरीका मिला है। नेट संसाधन जिन्हें एकाधिक परियोजनाओं से संदर्भित किया जा सकता है?

मैं इसे पूरा करने के लिए एक बिल्ड इवेंट का उपयोग करने से बचना पसंद करूंगा (यानी, 'सार्वजनिक' के साथ 'आंतरिक' के सभी उदाहरणों को बदलने की तरह कुछ करने के लिए, लेकिन मूल रूप से मेरी गिरावट की योजना है यदि मैं का उत्तर नहीं मिल सकते हैं ..

उत्तर

37

यह निश्चित नहीं है दृश्य स्टूडियो प्रयोग कर रहे हैं के संस्करण, तो मैं या तो एक के लिए चरणों का रखा जाएगा:

वी.एस. 2008 - जब आप डिज़ाइन दृश्य में resx फ़ाइल को खोलने, वहाँ शीर्ष पर एक विकल्प के समक्ष जोड़ें है रिसोर्स एंड रिसोर्स, जिसे एक्सेस मॉडिफायर कहा जाता है, यह एक ड्रॉप डाउन है जहां आप जेनरेट कोड को आंतरिक से सार्वजनिक में बदल सकते हैं।

वीएस 2005 - आपके पास वीएस 2008 जैसे कोड उत्पन्न करने का विकल्प नहीं है। यह एक विशेषता थी जो इस सिरदर्द के कारण जोड़ा गया था। हालांकि आसपास के आसपास काम कर रहे हैं। आप इस tool जैसे किसी तृतीय पक्ष जनरेटर का उपयोग कर सकते हैं या आप अपनी Assembly लाइब्रेरी की आंतरिक कक्षाओं तक पहुंचने वाली परियोजनाओं को जोड़ने के लिए अपने AssemblyInIn.cs में InternalsVisibleTo विशेषता का उपयोग कर सकते हैं।

+0

बिल्कुल सही, धन्यवाद! मैंने पहले InternalsVisibleTo विशेषता को नहीं देखा था, लेकिन यह वही है जो मुझे चाहिए था। यह मुझे चीजों को सरल, साफ रखने देता है, और मुझे ResXFileCodeGeneratorEx को स्थापित करने की आवश्यकता नहीं है। –

+0

वीएस 2008 चरण वीएस 2010 के लिए भी काम करता है। धन्यवाद! –

2

विजुअल स्टूडियो 2008 को चुनने या न उत्पन्न संसाधन वर्ग आंतरिक या सार्वजनिक होना चाहिए आप की अनुमति देता है। वहाँ भी ResXFileCodeGeneratorEx है, जो कि क्या करना चाहिए से विजुअल स्टूडियो 2005

+0

मैं वीएस 2005 का उपयोग कर रहा हूं, इसलिए ResXFileGeneratorEx जाने का रास्ता होता। आपके उत्तर के लिए धन्यवाद! –

0

के लिए है डेटासेट डिज़ाइनर और प्रॉपर्टी विंडो दृश्यमान के साथ, एक "संशोधक" प्रॉपर्टी है। आपके डेटासेट के लिए, यह आंतरिक कहने की संभावना है।

मुझे नहीं पता कि सार्वजनिक रूप से सभी नए डेटासेट को डिफ़ॉल्ट रूप से सेट करने की सेटिंग है या नहीं।