2010-05-13 18 views
8

ठीक है, मैं यह एक डिजाइन मुद्दा हो सकता है पता है, तो मैं रूप में अच्छी तरह उस पर टिप्पणी करने के लिए प्यार होता।मैं विजुअल स्टूडियो में एकाधिक परियोजनाओं में कॉन्फ़िगरेशन सेटिंग्स कैसे साझा कर सकता हूं?

मैं एक दृश्य स्टूडियो वेब अनुप्रयोग समाधान है। मेरे पास UserInterface, BusinessLogic और DataAccess के रूप में तीन प्रोजेक्ट हैं।

मुझे कुछ उपयोगकर्ता परिभाषित सेटिंग्स को स्टोर करना पड़ा और मैंने कॉन्फ़िगरेशन फ़ाइल में configSections बनाया था।

मैं इन कॉन्फ़िगरेशन अनुभागों को उन कक्षाओं के माध्यम से एक्सेस करता हूं जो .NET के ConfigurationSection बेस क्लास से प्राप्त होते हैं।

तो प्रत्येक प्रोजेक्ट के लिए संक्षेप में मेरे पास एक अलग कॉन्फ़िगरेशन था और उस संबंधित कॉन्फ़िगरेशन के लिए मेरे पास कॉन्फ़िगरेशन अनुभाग सेटिंग्स तक पहुंचने के लिए ConfigurationSection से विरासत में उस प्रोजेक्ट में एक कक्षा थी।

यह सब मीठा काम करता है। लेकिन समस्या तब उत्पन्न होती है जब कोई ऐसी सेटिंग होती है जिसे मुझे कई परियोजनाओं में उपयोग करने की आवश्यकता होती है। इसलिए मैं BusinessLogic परियोजना एक सेटिंग में UserInterface परियोजना configSection में परिभाषित उपयोग करने के लिए, मान लीजिए की जरूरत है मैं वास्तव में BusinessLogic के configSection में उस सेटिंग की एक प्रतिलिपि बनाने के लिए है। यह एक ही सेटिंग को एकाधिक कॉन्फ़िगरेशन में कॉपी किया गया है।

यदि यह कुछ अधिक निरर्थक नहीं है?

उत्तर

3

रखें साझा एक अलग फाइल में config सेटिंग्स और इस तकनीक का प्रयोग: http://blogs.msdn.com/jjameson/archive/2009/04/02/linked-files-in-visual-studio-solutions.aspx

+0

कि लिंक रखने के लिए की आवश्यकता है, बहुत अच्छी तरह से लिंक की गई फ़ाइलों का वर्णन करता है। – Will

+0

हम्म। क्या यह 'सामान्य' परियोजना बनाने और इसमें साझा सेटिंग्स डालने की तरह नहीं है। और फिर बाकी परियोजनाएं इसके लिए उस आम तक पहुंच सकती हैं? – neebz

0

अपने उदाहरण का उपयोग करना:

बस व्यापार तर्क परियोजना में सेटिंग बनाने और उसके बाद उपयोगकर्ता इंटरफ़ेस परियोजना के लिए एक मनुष्य का पर्दाफाश ।

फिर यूआई मूल्य के लिए बीएल से पूछताछ कर सकता है। आपकी कॉन्फ़िगरेशन सेटिंग केवल एक ही स्थान पर है - यह निम्नतम स्तर हो सकता है।

हालांकि, यदि आप एक निम्न स्तर के साथ निचले स्तर की परियोजना को प्रतिस्थापित करते हैं तो आपको यह सुनिश्चित करना होगा कि सेटिंग भी दोहराई गई है। यह सेटिंग केवल एक समस्या होने की संभावना है यदि सेटिंग डेटा एक्सेस स्तर में है क्योंकि यह सबसे अधिक बदलने की संभावना है (उदाहरण के लिए अलग डेटाबेस प्रदाता)।

1

कभी वास्तव में यह किया है, लेकिन सिद्धांत रूप में यह काम हो सकता है ...

जब आप अपने कस्टम विन्यास अनुभाग को परिभाषित, अपने configSource एक बाहरी फ़ाइल (whatever.config) के लिए निर्धारित किया है। इस बाहरी फ़ाइल को समाधान में जोड़ा जाना चाहिए, न कि परियोजना। यह "समाधान आइटम" के अंतर्गत दिखाई देगा। प्रत्येक प्रोजेक्ट में, मौजूदा फ़ाइल जोड़ें, जो भी .config पर ब्राउज़ करें, जोड़ें बटन पर ड्रॉपडाउन पर क्लिक करें और "लिंक के रूप में जोड़ें" चुनें।

जो भी .config एक एकल फ़ाइल होगी जिसे आप समाधान आइटम के तहत संपादित कर सकते हैं, और यह संकलन समय पर प्रत्येक एप्लिकेशन में कॉपी हो जाता है।

+0

हाँ मैं एक ही पंक्ति पर सोच रहा था। मेरे पास एकमात्र मुद्दा यह है कि मैं हैंडलर क्लास (जो जो भी .config से जानकारी को पार करता है) को समाधान आइटम के रूप में भी रखना चाहता था।ताकि कॉन्फ़िगर + इसके पार्सर केवल एक बार मौजूद हो और कई परियोजनाओं में जोड़ा जा रहा हो। हालांकि समस्या यह नहीं है कि विजुअल स्टूडियो एक वर्ग संकलित करेगा जो समाधान आइटम स्तर पर है? मैं इसे करने में सक्षम नहीं हूं। – neebz

0

"साझा परियोजनाओं" का उपयोग करके ऐसा करने का एक बेहतर तरीका है very similar question here पर मेरा उत्तर देखें।

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

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