App.config: उपयोगकर्ता बनाम अनुप्रयोग स्कोप


90

मैंने अपने प्रोजेक्ट में App.config फ़ाइल जोड़ी है। मैंने प्रोजेक्ट> गुण> सेटिंग पैनल से दो सेटिंग्स बनाई हैं -

यहां छवि विवरण दर्ज करें

मैंने देखा है कि जब मैं एक सेटिंग जोड़ रहा हूं, तो मैं गुंजाइश को Userया के रूप में परिभाषित कर सकता हूं Application। -

  1. उपयोगकर्ता
  2. आवेदन

यदि मैं सेटिंग को परिभाषित करता हूं जैसा कि Userयह userSettingsअनुभाग में जाता है ,
अगर मैं सेटिंग को परिभाषित करता हूं जैसे Applicationयह applicationSettingsअनुभाग पर जाता है

app.config

<configuration>

    <userSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting1" serializeAs="String">
                <value>Value1</value>
            </setting>
        </DemoApp.Properties.Settings>
    </userSettings>

    <applicationSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting2" serializeAs="String">
                <value>Value2</value>
            </setting>
        </DemoApp.Properties.Settings>
    </applicationSettings>

</configuration>

लेकिन, इन सेटिंग्स को उसी तरह से एक्सेस किया जा सकता है .cs-

कोड

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;

इन दोनों में से किसी को किन परिस्थितियों Userऔर Applicationदायरे में अंतर करना चाहिए?

जवाबों:


72

मूल रूप से, प्रोग्राम और उपयोगकर्ता सेटिंग्स के चलने के दौरान एप्लिकेशन सेटिंग्स को नहीं बदला जा सकता है। इन उपयोगकर्ता सेटिंग्स को तब सहेजा जाना चाहिए ताकि उपयोगकर्ता को एक परिचित अनुभव के साथ प्रस्तुत किया जाए जब वह आगे आवेदन चलाता है।

संपादित करें: उदाहरण के लिए, आप अपने एप्लिकेशन को विभिन्न मॉड्यूल के साथ लिख सकते हैं, और यह सुनिश्चित करने की आवश्यकता है कि आपका मुख्य मॉड्यूल आपके सुरक्षा मॉड्यूल के सही संस्करण का उपयोग कर रहा है। इसके लिए आप एक एप्लिकेशन-स्कोप सेटिंग सेट करेंगे जैसे:

SecurityModuleVersion  string     Application      v1.21

कुछ समय बाद जब आप सुरक्षा मॉड्यूल refactor, आप v1.22 के लिए मूल्य बदल सकता है जब आप सुनिश्चित करने के लिए सही सुरक्षा कार्यान्वित किया जा रहा है की तैनाती

दूसरी ओर, यदि आपके एप्लिकेशन में रंग परिवर्तन, फ़ॉन्ट परिवर्तन आदि के साथ अलग-अलग 'खाल' हैं, तो आप निम्नलिखित की तरह उपयोगकर्ता सेटिंग सेट कर सकते हैं:

ApplicationSkin        string     User              DefaultSkin

फिर, जब मिशेल अपनी पसंद की त्वचा में बदलाव करती है, तो अनुप्रयोग उसकी सेटिंग्स को याद रखता है । गुण अब जैसे दिख सकते हैं:

ApplicationSkin        string     User              HelloKittySkin

क्या आप एक उदाहरण का उपयोग करके समझा सकते हैं?
पराग मेश्राम

1
डिफ़ॉल्ट सेटिंग्स कॉन्फ़िगर फ़ाइल में हैं, हां? लेकिन सहेजे गए उपयोगकर्ता सेटिंग्स कहाँ संग्रहीत हैं?
काइल डेलाने

7
ऐप सेटिंग्स * .exe.config फ़ाइल में सहेजी जाती हैं। उपयोगकर्ता सेटिंग्स को c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (जहाँ बाद में असेंबली फ़ाइल से खींचा जाता है) में सहेजा जाता है। लोड होने पर, उपयोगकर्ता सेटिंग्स ऐप सेटिंग्स पर पूर्वता लेते हैं।
Schrodo_Baggins

71

एप्लिकेशन-स्कोप सेटिंग्स को केवल पढ़ा जाता है, और केवल डिज़ाइन समय में या एप्लिकेशन सत्रों के बीच .exe.config फ़ाइल को बदलकर बदला जा सकता है। हालाँकि, उपयोगकर्ता-स्कोप सेटिंग्स को रन टाइम पर लिखा जा सकता है, जैसे आप किसी भी प्रॉपर्टी वैल्यू को बदलेंगे। नया मान एप्लिकेशन सत्र की अवधि के लिए बना रहता है। आप Settings.Save विधि को कॉल करके अनुप्रयोग सत्रों के बीच उपयोगकर्ता सेटिंग्स में परिवर्तन जारी रख सकते हैं।

Msdn पर स्रोत: C # में सेटिंग्स का उपयोग करना

उपयोगकर्ता की प्राथमिकताएँ उपयोगकर्ता की प्राथमिकताओं को बनाए रखने के लिए आम तौर पर उपयोग की जाती हैं (जैसे ऐप अधिसूचना प्राथमिकताएँ आदि)। एप्लिकेशन सेटिंग्स आम तौर पर एपीआई कुंजी आदि जैसे आइटम के लिए होती हैं।

जैसा कि @kmote द्वारा नोट किया गया है, जब उपयोगकर्ता सेटिंग्स को संशोधित किया जाता है और रन टाइम पर (के माध्यम से settings.Save()) बना रहता है, तो उन्हें उपयोगकर्ता प्रोफ़ाइल संग्रहण के भीतर एक फ़ोल्डर में लिखा जाएगा (आमतौर पर C: \ Users \ Username \ AppData \ Local \ AppName विंडोज 7 और इसके बाद के संस्करण में )। प्रोग्राम की फ़ाइल का स्थान निर्धारित करने के लिए, कृपया इस पोस्ट को देखें ।


किसी भी जीवित उदाहरण की बहुत सराहना की जाएगी
पराग मेश्राम

1
यह भी बताया जाना चाहिए कि सत्रों के बीच .config फ़ाइल को संपादित करके उपयोगकर्ता सेटिंग्स को नहीं बदला जा सकता है।
kmote

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

5
@ दिल: मुझे और अधिक सटीक होना चाहिए था। आप सही हैं कि सत्रों के बीच उपयोगकर्ता सेटिंग बदली जा सकती है। एक बार, जब आप उन्हें प्रोग्रामेटिक रूप से बदलते हैं (उपयोग करते हैं Settings.Save()), तो एक नई कॉन्फ़िग फ़ाइल बनाई जाती है और C: \ Users [उपयोगकर्ता नाम] \ AppData \ Local \ Microsoft में छिपी / दफन हो जाती है। उस बिंदु से, जब भी एप्लिकेशन शुरू किया जाता है तो उपयोगकर्ता सेटिंग्स को उस फ़ाइल से विशेष रूप से तैयार किया जाएगा , और App.config या Settings.settings में किसी भी परिवर्तन को मैन्युअल रूप से अनदेखा किया जाएगा।
किमी

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