2009-06-28 4 views
8

तो मेरे पास कुछ सेटिंग्स हैं जो उपयोगकर्ता गुंजाइश हैं, लेकिन किसी कारण से, उन्हें .exe.config फ़ाइल में सहेजा नहीं जा रहा है। मैं निम्न कार्य करें:मेरी एप्लिकेशन सेटिंग्स क्यों नहीं चल रही हैं?

Properties.Settings.Default.Email = "[email protected]"; 
Properties.Settings.Default.Save(); 

अभी तक मैं डिबग फ़ोल्डर में सेटिंग फ़ाइल को देखो और यह अभी भी डिफ़ॉल्ट है कि मैं दृश्य स्टूडियो में सेट है। क्या मैं यह गलत कर रहा हूँ?

उत्तर

13

उपयोगकर्ता सेटिंग्स उपयोगकर्ता के लिए विशिष्ट हैं, इसलिए वे वापस .exe.config फ़ाइल में सहेजे नहीं जाएंगे, जो सिस्टम चौड़ा है।

LocalSettingsProvider की डॉक्स से:

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

तो के लिए एक UserSettingsTest आवेदन सिर्फ डिबगर (इसलिए vshost बिट) मैं का एक पथ के साथ समाप्त हो गया तहत वी.एस. से चलाएँ: एक के भीतर के साथ आवेदन डेटा के अंतर्गत सहेजा

C:\Users\Jon\AppData\Local\UserSettingsTest 
    \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu 
    \1.0.0.0\user.config 
+1

मेरे पास WinXP है, लेकिन मुझे सी: \ दस्तावेज़ और सेटिंग्स \ Ryan में ऐसी कोई फ़ाइल या फ़ोल्डर नहीं दिखाई देता \ अनुप्रयोग डेटा। क्या यह सही जगह है? – ryeguy

+0

उम, एक्सपी पर यकीन नहीं है। सुबह में कोशिश करेंगे। –

+3

XP सी होगा: \ दस्तावेज़ और सेटिंग्स \ Ryan \ स्थानीय सेटिंग्स \ अनुप्रयोग डेटा – csjohnst

0

सभी उपयोगकर्ता गुंजाइश सेटिंग्स फ़ोल्डर जो आपके एप्लिकेशन और नाम का संस्करण इंगित करता है।

आप अपने "एप्लिकेशन सेटिंग्स" संवाद में "सिंक्रनाइज़" पर क्लिक करके इन फ़ोल्डरों को देख सकते हैं।

आम तौर पर Vista में:

  • C: \ Users [currentuser] \ AppData \ Local [CompanyName] [AppName] \ संस्करण
  • C: \ Users [currentuser] \ AppData \ रोमिंग [CompanyName] [AppName] \ संस्करण

सेटिंग्स वर्तमान उपयोगकर्ता और यूएसी साथ संबंधित हैं की वजह से इस तरह से हो गया। Vista में भी आप देख सकते हैं कि एप्लिकेशन-व्यापी सेटिंग्स कॉन्फ़िगरेशन फ़ाइल में संग्रहीत नहीं हैं।

[कंपनीनाम] और [ProductName] आपकी असेंबली सूचना सेटिंग्स से आता है।

15

यदि आपके पास असेंबली जानकारी स्वचालित रूप से किसी संस्करण संख्या (1.0। *) उत्पन्न करने के लिए सेट है, तो हर बार जब आप अपना ऐप डीबग करते हैं तो संस्करण संख्या अलग होगी, और इसलिए हर बार एक नई फाइल तैयार की जाएगी।

यदि यह स्थिति आप सेटिंग्स फ़ाइल पर एक उन्नत प्रदर्शन करने के लिए की आवश्यकता होगी: तो एक उन्नत प्रदर्शन के बाद

Properties.Settings.Default.Upgrade() 

तुम भी डिफ़ॉल्ट रूप से true को NeedsUpgrading की एक सेटिंग सेट कर सकते हैं और झूठे के लिए सेट अंत उपयोगकर्ता जो हर बार ऐप शुरू होने पर संस्करण संख्याओं को नहीं बदल रहे हैं, वे हर समय

+0

पता नहीं था कि अपग्रेड, साफ नामक एक विधि थी। –

+1

मैंने इस दृष्टिकोण का उपयोग यहां किया और सफलता मिली: http://bytes.com/topic/c-sharp/answers/522191-how-maintain-user-config-settings-when- उन्नयन –

+0

बहुत बढ़िया उत्तर, और सुरुचिपूर्ण NeedsUpgrading टिप! – DefenestrationDay