C # .NET में App.config क्या है? इसे कैसे उपयोग करे?


179

मैंने C # .NET में एक प्रोजेक्ट किया है जहाँ मेरी डेटाबेस फ़ाइल एक एक्सेल वर्कबुक है। चूंकि कनेक्शन स्ट्रिंग का स्थान मेरे कोडिंग में कठिन है, इसलिए इसे मेरे सिस्टम में स्थापित करने के लिए कोई समस्या नहीं है, लेकिन अन्य प्रणालियों के लिए यह है।

क्या एप्लिकेशन सेटअप पूरा होने के बाद उपयोगकर्ता को एक बार रास्ता तय करने का संकेत दिया जा सकता है?

मुझे जो उत्तर मिला, वह था "Use App.Config" ... क्या कोई बता सकता है कि यह App.config क्या है और इसे यहाँ मेरे संदर्भ में कैसे उपयोग किया जाए?


जवाबों:


190

अपने सरलतम पर, app.config एक XML फ़ाइल है जिसमें कई पूर्वनिर्धारित कॉन्फ़िगरेशन अनुभाग उपलब्ध हैं और कस्टम कॉन्फ़िगरेशन अनुभागों के लिए समर्थन है। एक "कॉन्फ़िगरेशन सेक्शन" XML का एक स्निपेट है जिसमें स्कीमा कुछ प्रकार की जानकारी संग्रहीत करने के लिए है।

सेटिंग्स को अंतर्निहित कॉन्फ़िगरेशन अनुभाग जैसे कि connectionStringsया का उपयोग करके कॉन्फ़िगर किया जा सकता है appSettings। आप अपने स्वयं के कस्टम कॉन्फ़िगरेशन अनुभाग जोड़ सकते हैं; यह एक उन्नत विषय है, लेकिन दृढ़ता से टाइप की गई कॉन्फ़िगरेशन फ़ाइलों के निर्माण के लिए बहुत शक्तिशाली है।

वेब अनुप्रयोगों में आमतौर पर एक web.config होता है, जबकि Windows GUI / सेवा अनुप्रयोगों में एक app.config फ़ाइल होती है।

एप्लिकेशन-स्तर कॉन्फिगरेशन फाइल ग्लोबल कॉन्फिगरेशन फाइल्स जैसे कि मशीन.कॉन्फिग से इनहेरिट सेटिंग्स को फाइल करती है।

App.Config से पढ़ना

कनेक्शन स्ट्रिंग्स में एक पूर्वनिर्धारित स्कीमा है जिसका आप उपयोग कर सकते हैं। ध्यान दें कि यह छोटा सा स्निपेट वास्तव में एक वैध ऐप है ।config (या web.config) फ़ाइल:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

एक बार जब आप अपने app.config को परिभाषित कर लेते हैं, तो आप इसे configManager वर्ग का उपयोग करके कोड में पढ़ सकते हैं । क्रिया MSDN के उदाहरणों से भयभीत न हों; यह वास्तव में काफी सरल है।

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

App.Config के लिए लेखन

बार-बार * .config फ़ाइलों को बदलना आमतौर पर एक अच्छा विचार नहीं है, लेकिन ऐसा लगता है कि आप केवल एक बार सेटअप करना चाहते हैं।

देखें: रन टाइम पर कनेक्शन स्ट्रिंग और पुनः लोड करें app.config बदलें जो connectionStringsरनटाइम पर * .config फ़ाइल के अनुभाग को अपडेट करने का तरीका बताता है।

ध्यान दें कि आदर्श रूप से आप एक साधारण इंस्टॉलर से ऐसे कॉन्फ़िगरेशन परिवर्तन करेंगे।

रनटाइम में App.Config का स्थान

प्रश्न : मान लीजिए कि मैं मैन्युअल रूप <value>से app.config में कुछ परिवर्तन करता हूं , इसे सहेजें और फिर इसे बंद करें। अब जब मैं अपने बिन फ़ोल्डर में जाता हूं और .exe फ़ाइल यहां से लॉन्च करता हूं, तो यह लागू परिवर्तनों को क्यों नहीं दर्शाता है?

A : जब आप किसी एप्लिकेशन को संकलित करते हैं, तो उसका app.config बिन डाइरेक्टरी 1 में आपके नाम से मेल खाने वाले नाम से कॉपी किया जाता है । उदाहरण के लिए, यदि आपके एक्स को "test.exe" नाम दिया गया था, तो आपके बिन निर्देशिका में "text.exe.config" होना चाहिए। आप एक recompile के बिना कॉन्फ़िगरेशन को बदल सकते हैं, लेकिन आपको उस कॉन्फ़िगरेशन फ़ाइल को संपादित करने की आवश्यकता होगी जो कि संकलन समय पर बनाई गई थी, न कि मूल app.config।

1: ध्यान दें कि web.config फाइलें स्थानांतरित नहीं हुई हैं, लेकिन इसके बजाय संकलन और परिनियोजन समय पर एक ही स्थान पर रहें। इसका एक अपवाद तब है जब web.config को रूपांतरित किया जाता है

.NET कोर

.NET कोर के साथ नए कॉन्फ़िगरेशन विकल्प पेश किए गए थे। जिस तरह से * .config फाइलें काम करती हैं, वह परिवर्तित नहीं हुई हैं, लेकिन डेवलपर्स नए, अधिक लचीले विन्यास प्रतिमानों को चुनने के लिए स्वतंत्र हैं।


इन्हें भी देखें: codeproject.com/Articles/16466/… एक बेहतरीन अवलोकन के लिए कि कैसे फाइल काम करती है
BKSpurgeon

56

बस, App.config एक XMLआधारित फ़ाइल स्वरूप है जो एप्लिकेशन स्तर कॉन्फ़िगरेशन को रखता है ।

उदाहरण:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

आप ConfigurationManagerनीचे दिए गए कोड स्निपेट के टुकड़े के रूप में उपयोग करके कॉन्फ़िगरेशन तक पहुंच सकते हैं:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

नोट: ConfigurationSettings अप्रचलित तरीका है कॉन्फ़िगरेशन जानकारी प्राप्त करने के लिए।

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

21
System.Configuration.dllउपर्युक्त एपीआई का उपयोग करने के लिए आपको संदर्भ देने की आवश्यकता है ।
KFL

2
एक के लिए, आपको AppSettings अनुभाग में कनेक्शन स्ट्रिंग्स को संग्रहीत नहीं करना चाहिए, वे कनेक्शनस्ट्रीमर्स अनुभाग में जाते हैं। दो के लिए, विज़ुअल स्टूडियो आपकी सेटिंग्स के लिए मजबूत टाइप किए हुए गुण उत्पन्न करेगा यदि आप उन्हें डिज़ाइनर के माध्यम से ठीक से बनाते हैं, तो आपको कभी भी एक प्रमुख नाम मैन्युअल रूप से टाइप करने की आवश्यकता नहीं होनी चाहिए (जैसे आप उपरोक्त कोड में हैं)।
ब्रेनस्ल्गस83

1
हम यहां सर्वोत्तम प्रथाओं के बारे में नहीं बल्कि ओपी समस्या के समाधान के बारे में बात कर रहे हैं।
फुरकान सफदर

2
System.Configuration.ConfigurationManager.AppSettings["Key"]एक तार पहले से ही है, इस ToString()पर कॉल करना बेमानी है।
बजे बोगडान स्टेंसनस्कू

4

बस कुछ जोड़ने के लिए मैं सभी उत्तरों से गायब था - भले ही आप जानते हैं कि यह मूर्खतापूर्ण और स्पष्ट प्रतीत होता है:

फ़ाइल को "App.config" या "app.config" नाम देना होगा और यह आपकी परियोजना में उसी स्तर पर स्थित हो सकता है, जैसे कि Program.cs।

मुझे नहीं पता कि क्या अन्य स्थान संभव हैं, अन्य नाम (जैसे application.conf, जैसा कि ODP.net दस्तावेज़ में सुझाया गया है) मेरे लिए काम नहीं करता था।

पुनश्च। मैंने विजुअल स्टूडियो कोड के साथ शुरुआत की और "डॉटनेट न्यू" के साथ एक नया प्रोजेक्ट बनाया। इस मामले में कोई कॉन्फ़िगरेशन फ़ाइल नहीं बनाई गई है, मुझे यकीन है कि अन्य मामले भी हैं। पी पी एस। आपको कॉन्फ़िगर फ़ाइल को पढ़ने में सक्षम करने के लिए एक nuget पैकेज जोड़ने की आवश्यकता हो सकती है। .NET कोर के मामले में यह "dotnet add package System.Configuration.ConfigurationManager --version 4.5.0" होगा।


यह वही है जिसे मैं देख रहा था। यह जानने की जरूरत है कि इसे किस स्तर पर शामिल किया जाए। कुछ प्रोग्राम / फ्रेमवर्क फ़ोल्डर में दिखते हैं जैसे/resources
एलेक्स

3

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

ऐसा करने के लिए इस MSDN लेख को देखें ।



0

बस एक और बिंदु जोड़ रहा हूं

App.config का उपयोग करके आप एप्लिकेशन एक्सेस को कैसे नियंत्रित कर सकते हैं, आप संपूर्ण एप्लिकेशन उपयोग एप्लिकेशन फ़ाइल में विशेष परिवर्तन लागू करना चाहते हैं और आप नीचे कॉन्फ़िगरेशन जैसे सेटिंग्स तक पहुँच सकते हैं ।AppSettings ["की"]

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