2012-10-24 12 views
65

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

enter image description here

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

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

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

एप्लिकेशन को जाता है। कॉन्फ़िगर

<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 दायरे के बीच किन परिस्थितियों के बीच चयन करना चाहिए के तहत अंतर नहीं है ये दोनों?

उत्तर

47

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

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

SecurityModuleVersion string  Application  v1.21 

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

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

ApplicationSkin  string  User    DefaultSkin 

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

ApplicationSkin  string  User    HelloKittySkin 
+0

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

+12

'हैलोकिटीस्किन': पी – Dan

+0

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

61

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

स्रोत: Using Settings in C#

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

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

+0

किसी भी लाइव उदाहरण बहुत सराहना की जाएगी –

+1

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

+0

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

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