कस्टम कॉन्फ़िगरेशन फ़ाइलें लोड हो रही हैं


119

मुझे पता है कि मैं उन फ़ाइलों को खोल सकता हूं जो स्टैटिक ConfigurationManager.OpenExe(exePath)विधि से असेंबली से संबंधित हैं, लेकिन मैं केवल एक कॉन्फिगरेशन खोलना चाहता हूं जो असेंबली से संबंधित नहीं है। बस एक मानक .NET config फाइल।

जवाबों:


244

रिकी द्वारा पोस्ट किए गए लेख बहुत अच्छे हैं, लेकिन दुर्भाग्य से वे आपके सवाल का जवाब नहीं देते हैं।

अपनी समस्या को हल करने के लिए आपको कोड का यह प्रयास करना चाहिए:

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

यदि आप इंडेक्स ऑपरेटर का उपयोग कर सकते हैं तो विन्यास के भीतर एक मूल्य तक पहुँचने की आवश्यकता है:

config.AppSettings.Settings["test"].Value;

1
@Oliver करके whateverYouLikeExtension, आप मतलब है कि आप करना चाहिए है कुछ के बाद config.?
संवत्

4
@ ओलिवर अब कोशिश करने के लिए चारों ओर हो गया, और बिना ठीक काम करने लगता है :)
Svish

1
मैंने ऐसा किया था, लेकिन जब मैं configurationManager.ConnectionStrings का उपयोग करता हूं तो मैं अभी भी पुराने डेटा प्राप्त कर रहा हूं। मैं क्या खो रहा हूँ?
MAW74656

1
@ MAW74656: आपको एक्सेस नहीं करना है ConfigurationManager.ConnectionStrings। इसके बजाय आपको configऊपर दिए गए अंतिम कथन से लौटी वस्तु से मान पढ़ना होगा ।
ओलिवर

3
किसी और के लिए यह पता लगाने के लिए कि इसके बाद ऐपसेटिंग कैसे प्राप्त की जाए: var foo = config.AppSettings.Settings ["test"]। मान;
रोरो

8

कॉन्फ़िगरेशन फ़ाइल सिर्फ एक XML फ़ाइल है, आप इसे इसके द्वारा खोल सकते हैं:

private static XmlDocument loadConfigDocument()
{
    XmlDocument doc = null;
    try
    {
        doc = new XmlDocument();
        doc.Load(getConfigFilePath());
        return doc;
    }
    catch (System.IO.FileNotFoundException e)
    {
        throw new Exception("No configuration file found.", e);
    }
    catch (Exception ex)
    {
        return null;
    }
}

और बाद में मानों को पुनः प्राप्त करके:

    // retrieve appSettings node

    XmlNode node =  doc.SelectSingleNode("//appSettings");

अनुपलब्ध कोड के बाद पता चला throw new Exception("No configuration file found.", e);
ओयबेक

मैं वापसी नल को हटा दूंगा, यह वास्तव में नहीं पहुंचेगा।
ओट्टोवियो डेसिओ

7
XML का उपयोग क्यों करें जब आपके पास .Net पुस्तकालय से इतनी बड़ी कक्षाएं हैं। मैं इसका उपयोग करने का सुझाव नहीं दूंगा, डिजाइन पर खराब। आगे क्या? एक अलग स्ट्रिंग वर्ग लागू करें ... इस पर विचार करें।
युकी

@ OtávioDécio क्या मैं कस्टम .config फ़ाइल में अनुरेखण को सक्षम करने के लिए system.diagnostics जोड़ सकता हूं?
फैजानहुसैनरब्बानी

@FaizanRabbani कस्टम ट्रेसिंग के बारे में निश्चित नहीं है, लेकिन msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx के अनुसार आपको कॉन्फ़िग फ़ाइल में डायग्नोस्टिक जोड़ने में सक्षम होना चाहिए।
ओट्टोवियो डेसिओ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.