हालांकि .NET कॉन्फ़िगरेशन फ़ाइलों के बारे में बहुत सी पोस्ट हैं, मुझे विश्वास है कि मेरी आवश्यकताएं प्रस्तावित समाधानों में से किसी एक के लिए अनुमति नहीं देती हैं (या मैं इसे मेरे लिए काम करने के लिए पर्याप्त प्रक्रिया को समझ नहीं पा रहा हूं)।सभी एप्लिकेशन डेटा को सहेजने और पुनर्स्थापित करने के लिए .NET कॉन्फ़िगरेशन फ़ाइलों (app.config, settings.settings) का उपयोग कैसे करें?
स्थिति यह है कि मेरे पास एक विंडोज़ फॉर्म एप्लिकेशन है (जैसा कि एक और ऐप भी हो सकता है) जो कुछ उपयोगकर्ता इनपुट फ़ील्ड (जैसे आईपी एड्रेस), साथ ही फॉर्म प्रॉपर्टीज (विंडो साइज इत्यादि) को एप्लिकेशन सेटिंग्स में जोड़ता है (गुणों में>> सेटिंग्स क्षेत्र)। जो मैं समझता हूं, ये सेटिंग्स मेरे प्रोजेक्ट की app.config फ़ाइल में प्रदर्शित की तरह ही हैं, इसलिए मुझे सिस्टम का उपयोग करने में सक्षम होना चाहिए। कॉन्फ़िगरेशन। कॉन्फ़िगरेशन मैनेजर क्लास उन सेटिंग्स में हेरफेर करने के लिए।
मैं क्या करना चाहता हूं कि उपयोगकर्ता को सभी सहेजी गई सेटिंग्स को निर्यात और आयात करने दें। कुछ कस्टम ऑब्जेक्ट के क्रमबद्ध करने या आईएनआई फाइलों के साथ काम करने के बजाय, मैंने सोचा कि एप्लिकेशन को उपयोग करने वाली कॉन्फ़िगरेशन फ़ाइल को केवल सहेजना और प्रतिस्थापित करना आसान होगा।
यह अपेक्षाकृत एक निर्दिष्ट फ़ाइल के लिए वर्तमान सेटिंग्स को बचाने के लिए आसान है:
internal static void Export(string settingsFilePath)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
config.SaveAs(settingsFilePath);
}
हालांकि, एक कॉन्फ़िग फ़ाइल को बहाल वर्तमान सेटिंग्स के ऊपर लिख करने के लिए मुश्किल साबित हो रहा है।
ऐसा लगता है कि मैं बहुत
var newConfig = ConfigurationManager.OpenExeConfiguration(settingsFilePath)
की तरह एक विन्यास फाइल खोल सकते हैं, लेकिन मैं नहीं दिख रहा है कि कैसे पूरी तरह से आयात की गई फ़ाइल के लोगों के साथ वर्तमान config में सेटिंग्स के सभी को बदलने के लिए।
[संपादित करें: यह अधिभार .exe का पथ प्राप्त करने वाला है, न कि .config फ़ाइल। यदि बुला कोड कॉन्फ़िग फ़ाइल में एक ही विधानसभाओं को संदर्भित नहीं करती इस तरह से एक exe फ़ाइल खोलने संभवतः एक ConfigurationErrorsException फेंक देते हैं।]
शायद मैं केवल का केवल एक वर्ग को प्रतिस्थापित करने के तरीकों other posts में उल्लिखित उपयोग करने की आवश्यकता कॉन्फ़िगरेशन, और पूरी बात नहीं, लेकिन मुझे नहीं पता कि यह इस बिंदु पर कैसे काम करेगा।
कोई विचार? क्या मैं सही रास्ते पर जा रहा हूं, या क्या मुझे सिर्फ आईएनआई फाइलों (या कुछ और) का उपयोग करना चाहिए?
ऐसा लगता है कि आप पूरी फ़ाइल में हेरफेर करने के बारे में सही नहीं हैं: स्मृति में, कम से कम, "ऐपसेटिंग" की तुलना में कई और अनुभाग हैं जो मुझे लगता है कि मुझे रूचि है। मेरा मतलब क्या है, var currentConfig = ConfigurationManager.OpenExe कॉन्फ़िगरेशन (ConfigUserLevel.PerUserRoamingAndLocal) का प्रयास करें; वर्तमान कॉन्फिग.डंप(); LINQPad में । – Pat
मुझे पता चला है कि यह "ऐपसेटिंग" मान नहीं है जिसे मैं बदलना चाहता हूं, लेकिन "उपयोगकर्ता सेटिंग्स" मान। विशेष रूप से, यह बाल नोड है। –
Pat