2013-03-03 4 views
6

मेरे पास कई सी # कंसोल अनुप्रयोग हैं, जिन्हें सेटिंग्स का एक ही सेट होना आवश्यक है। मैं डुप्लिकेट से बचना चाहता हूं और प्रत्येक एप्लिकेशन के लिए app.config से अलग होना चाहता हूं।एकाधिक अनुप्रयोगों के लिए सामान्य app.config

वहाँ अनुप्रयोगों (app1.exe, app2.exe) के लिए किसी भी तरह से एक आम app.config फ़ाइल को पढ़ने के लिए (जैसे कि common.config) है।

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/9811414/can-multiple-c-shar पी-ऐप-यूज-वन-एप-कॉन्फिग-फाइल) –

+0

आपको वास्तव में ऐसा करने का प्रयास नहीं करना चाहिए। एक कॉन्फ़िगरेशन फ़ाइल को अपने स्वयं के स्थान में एप्लिकेशन के लिए अद्वितीय होना चाहिए। –

उत्तर

5

आप नीचे दिए गए कोड का उपयोग कर एक बाहरी app.config लोड कर सकते हैं:

config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe")); 
string logpath = config.AppSettings.Settings["Log.Path"].Value; 

और सेटिंग्स के रूप में तो बचाने:

config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe")); 
config.AppSettings.Settings["Log.Path"].Value = "C:\newpath"; 
config.Save(); 

आप अनुप्रयोगों में से एक के भीतर एक मास्टर कॉन्फ़िग के लिए हो सकता है और बाकी को इस पर इंगित करें। आमतौर पर इस विधि को खराब अभ्यास माना जाता है। फाइल लॉक करने वाले विभिन्न अनुप्रयोगों के साथ समस्या हो सकती है।

+0

कोड भी काम करता है भले ही कोई मास्टर.एक्सई न हो? –

+0

मैंने उस फैशन में कोशिश नहीं की है। आपको प्रयोग करना होगा। आप हमेशा मास्टर कॉन्फ़िगरेशन फ़ाइल के साथ कक्षा लाइब्रेरी बना सकते हैं। फिर उस पुस्तकालय में, एक एक्सेसर बनाएं और अपनी सभी अन्य परियोजनाओं में लाइब्रेरी का संदर्भ लें। फिर डेटा पुनर्प्राप्त करने के लिए एक्सेसर का उपयोग करें। –

8

app.config नामक एक फ़ाइल बनाएं। समाधान निर्देशिका में जैसे, अपनी परियोजनाओं की निर्देशिकाओं के बाहर इसे किसी स्थान पर रखें। फ़ाइल के सापेक्ष पथ के साथ एक लिंक किए गए आइटम के रूप में इसे अपनी परियोजनाओं में जोड़ें। प्रत्येक प्रोजेक्ट में इस आइटम (एप्लिकेशन कॉन्फ़िगरेशन) के लिए सही बिल्ड एक्शन सेट करें।

अब जब प्रत्येक प्रोजेक्ट बनाता है, तो फ़ाइल को सही नाम के साथ प्रोजेक्ट के आउटपुट डीआईआर में कॉपी किया जाएगा।

4

@ रण का जवाब एक विकल्प है, लेकिन आपके आवेदन के बाद प्रत्येक एप्लिकेशन की अपनी कॉन्फ़िगरेशन फ़ाइल होगी। संकलन समय पर वे वही होंगे, लेकिन समय पर तैनात होने पर वे प्रतियां हैं।

तुम भी का उपयोग कर किसी अन्य अनुप्रयोग से एक आवेदन के कॉन्फ़िग फ़ाइल खोल सकते हैं: ConfigurationManager.OpenMappedExeConfiguration

और वहाँ मशीन का उपयोग कर के लिए विकल्प है: ConfigurationManager.OpenExeConfiguration(string)

आप किसी बाहरी कॉन्फ़िग फ़ाइल है कि सभी अनुप्रयोगों का उपयोग करने का संदर्भ हो सकता है कॉन्फ़िग फ़ाइल का उपयोग करते हुए: ConfigurationManager.OpenMachineConfiguration()

[? कई सी # क्षुधा एक app.config उपयोग कर सकते हैं फ़ाइल] (की
संबंधित मुद्दे