2009-07-29 13 views
24

हर बार जब मैं अपना ऐप संकलित करता हूं और संस्करण संख्या में परिवर्तन होता है (मेरे पास एक ऑटो-इंक्रिमेंटिंग बिल्ड नंबर है), तो मैं उपयोगकर्ता द्वारा कॉन्फ़िगर की गई ऐप.कॉन्फिग सेटिंग्स खो देता हूं, क्योंकि वे किसी विशिष्ट संस्करण के लिए ऐपडाटा फ़ोल्डर में संग्रहीत होते हैं। अनिवार्य रूप से, मेरे आवेदन की हर रिलीज स्क्रैच से शुरू होती है जहां तक ​​उपयोगकर्ता सेटिंग्स जाते हैं।app.config फ़ाइल के पिछले संस्करण से उपयोगकर्ता सेटिंग्स को स्वचालित रूप से "अपग्रेड करें"?

हालांकि यह विकास में मामूली परेशानी है, लेकिन यह सवाल उठता है क्योंकि मैं तैनाती/रिलीज - तक पहुंचता हूं यदि मैं अपनी उपयोगकर्ता सेटिंग्स को स्टोर करने के लिए app.config का उपयोग करता हूं, तो क्या उपयोगकर्ता की व्यक्तिगत सेटिंग्स हर बार स्थापित होने पर हो सकती है पैच जो मेरे ऐप के संस्करण संख्या को बदलता है? यदि हां, तो क्या पिछले रिलीज से सेटिंग्स को "अपग्रेड" करने का कोई आसान तरीका है? मुझे पता है कि रजिस्ट्री में HKCU का उपयोग करना एक और विकल्प है, लेकिन मुझे My.Settings नेमस्पेस की आसानी पसंद है, और मैं app.config के साथ रहना चाहता हूं।

Another SO question कुछ समान पूछता है, हालांकि उत्तर स्पष्ट नहीं लगता है। मेरे एमएसआई को स्थापित करेगा, इसलिए यह उपयोगकर्ता को इन उपयोगकर्ता-स्तरीय सेटिंग्स को संरक्षित करने के लिए पर्याप्त अपग्रेड करने के लिए कहता है?

उत्तर

34

क्या आपने ApplicationSettingsBase.Upgrade() पर देखा है? यह अनुमति देता है सेटिंग्स पिछले संस्करण निम्नलिखित कॉल का उपयोग करने से अपग्रेड किए जाने की:

My.Settings.Upgrade() 
+5

यह वही व्यवहार है जिसे मैं ढूंढ रहा था - यह सेटिंग्स की सबसे हाल की प्रति प्राप्त करता है और उनको लोड करता है। यह भी ध्यान देने योग्य है कि अनुप्रयोग सेटिंग्स सेटिंग्स। GetPreviousVersion विधि है, जिसे आप पिछले संस्करण से एक सेटिंग लोड करने के लिए उपयोग कर सकते हैं। धन्यवाद! – SqlRyan

1

क्या आपने क्लिकऑन परिनियोजन पर विचार किया है? इस विषय को तब in depth कवर किया गया है। आईएमओ, डेवलपर और उपयोगकर्ता दोनों के लिए क्लिकऑन्स बहुत आसान है।

+5

ClickOnce तब तक बढ़िया है जब तक यह काम नहीं करता है, और फिर इसे डिबग करना लगभग असंभव है। हम इसका इस्तेमाल करते थे, और इसे अपने "लॉन्चर" प्रकार के कार्यक्रम के साथ बदलते थे क्योंकि बहुत सी चीजें होती थीं जो हमारे नियंत्रण से गलत हो सकती थीं और पर्याप्त लॉगिंग के बिना उपयोगकर्ता को छोड़ दिया गया था। –

7

सुनिश्चित नहीं हैं कि क्यों लेकिन न तो उन्नयन आदेश या पिछले संस्करण मिल मेरे लिए काम करने लगता है। मुझ से ऐसी कौनसी गलती हो जाएगी? क्या मुझे रीफ्रेश कमांड या कुछ कॉल करने की ज़रूरत है। मैं इसे फॉर्म लोड पर कर रहा हूं, क्या यह एक एप्लीकेशन इवेंट होना चाहिए?

अद्यतन

बाहर मिले क्यों, यह है जब आप एक 4 अंकों प्रमुख संस्करण संख्या का उपयोग यह काम नहीं करता है। मैं वर्ष 2012 का उपयोग प्रमुख संस्करण संख्या के रूप में कर रहा था। मैंने इसे 12 तक बदल दिया है और यह एक आकर्षण की तरह काम करता है, हालांकि सहस्राब्दी अनुपालन नहीं है। मुझे इसके बारे में चिंता करना शुरू करने से पहले 88 साल पहले भी मिल गया!

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