app.config फ़ाइल से पढ़ना


131

मैं नीचे दिए गए एप्लिकेशन से StartMonthColumn और CategoryHeadingColumn को पढ़ने का प्रयास कर रहा हूं। कोड का उपयोग करके फ़ाइल को कॉन्फ़िगर करें

ConfigurationSettings.AppSettings["StartingMonthColumn"]

लेकिन यह अशक्त लौट रहा है, साथ ही configurationSettings.AppSettings.ount रिटर्न शून्य है

कृपया इसे मेरे विंडोज़ एप्लिकेशन में पढ़ने में मेरी मदद करें

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <CTARepository.Properties.Settings>
            <setting name="Setting" serializeAs="String">
                <value />
            </setting>
        </CTARepository.Properties.Settings>
    </userSettings>
    <appSettings>
        <add key="StartingMonthColumn" value="7"/>
        <add key="CategoryHeadingColumn" value="1"/>
    </appSettings>
</configuration>

क्या आप प्रोजेक्ट के रूट पर कॉन्फिग फ़ाइल को बदलते समय \ bin \ debug फ़ोल्डर से ऐप चलाने का प्रयास कर रहे हैं? अन्यथा, कॉन्फ़िगरेशन बदलें और क्लीनअप चलाने के बाद कोड का पुनर्निर्माण करें।
कंगण

1
फ़ाइल का नाम "app.config" सही नहीं है? यह निश्चित रूप से आपके प्रोजेक्ट में नामित है, लेकिन एप्लिकेशन आउटपुट निर्देशिका में, इसे आपके आउटपुट बाइनरी + ".config" के समान नाम दिया जाना चाहिए (इसलिए "MyLibrary.dll.config", या "MyProgram.exe.config" की तरह। ", आदि ...)
BrainSlugs83

@ BrianSlugs83 धन्यवाद दोस्त, मैं सोच रहा था कि मेरा ऐप क्यों क्रैश हो गया। अब, हर जगह खोज करने के दो दिनों के बाद, जवाब यहाँ टिप्पणी में है। मेरे पास बस "app.config" और कोई "MyProgram.exe.config" नहीं था।
atमिग्लिडिगली

समाधान के लिए कृपया stackoverflow.com/questions/1189364/… को देखें। धन्यवाद
Ariful इस्लाम

जवाबों:


171

विन्यास सेटिंग्स .AppSettings है अप्रचलित , आप का उपयोग करना चाहिए विन्यास प्रबंधक .AppSettings बजाय (आप के लिए एक संदर्भ जोड़ने की आवश्यकता होगी System.Configuration )

int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);

यदि आपको अभी भी अपनी ऐप सेटिंग में पढ़ने में समस्या है, तो जांचें कि आपकी app.configफ़ाइल का नाम सही है। विशेष रूप से, इसे निष्पादित विधानसभा के अनुसार नामित किया MyApp.exe.configजाना चाहिए, और उसी निर्देशिका में निवास करना चाहिए MyApp.exe


2
यदि कॉन्फ़िगरेशनशूटिंग .AppSettings ["BeginMonthColumn"] अशक्त या एक रिक्त स्ट्रिंग देता है तो मुझे संदेह होगा कि Int32.Parse उस मानों को पार्स करने के प्रयास पर एक अपवाद फेंक देगा।
बिटरकोडर

@bittercoder, हाँ यह फिर भी, आपकी app.config फ़ाइल में हमेशा सही कॉन्फ़िगरेशन होना चाहिए । अगर ओपी वहां पर किसी तरह के हैंडलिंग यानी ट्रायपर्स को जोड़ना चाहता है तो हर तरह से कर सकता है। हालाँकि, यह सवाल नहीं था।
जेम्स

2
ध्यान दें कि आप Settings.Default के माध्यम से मूल्यों के मजबूत टाइप संस्करणों तक भी पहुँच प्राप्त कर सकते हैं। * (यानी, इस मामले में यह Settings.Default.StartingMonthColumn) होगा।
BrainSlugs83

@ BrainSlugs83 ध्यान दें कि ऐप सेटिंग के साथ आपके उपयोगकर्ता भ्रमित हो रहे हैं। यदि आप ऐप सेटिंग्स पर दृढ़ता से टाइप करना चाहते हैं, तो आपको कस्टम कॉन्फ़िगरेशन
जेम्स

यह सही नहीं है, यह मानों को app.config से खींच लेगा, भले ही मान "उपयोगकर्ता" या "एप्लिकेशन" के लिए स्कोप किए गए हों (GUI डिज़ाइनर से, आप प्रत्येक सेटिंग के लिए गुंजाइश चुन सकते हैं)।
BrainSlugs83

20

बस भविष्य के संदर्भ के लिए, आपको बस System.Configurationअपने संदर्भ पुस्तकालय में जोड़ने की आवश्यकता है :

यहाँ छवि विवरण दर्ज करें


2
आपका उत्तर यहां पहले उत्तर से बेहतर है, हर कोई यह कहना भूल गया कि आपको एक संदर्भ जोड़ना होगा
Essanousy

19

ConfigurationSettings.AppSettings पदावनत है , यहाँ देखें:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx

उस ने कहा, यह अभी भी काम करना चाहिए।

बस एक सुझाव है, लेकिन क्या आपने पुष्टि की है कि आपका एप्लिकेशन कॉन्फ़िगरेशन आपके निष्पादन योग्य उपयोग कर रहा है?

डिबगर संलग्न करने का प्रयास करें और निम्न मान की जाँच करें:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

और फिर कॉन्फ़िगरेशन फ़ाइल को खोलना और अनुभाग को सत्यापित करना वहाँ है जैसा कि आपने उम्मीद की थी।


हाय Bittercoder जब मैं AppDomain.CurrentDomain.SetupInformation.ConfigurationFile के लिए मान प्राप्त करने का प्रयास करता हूं तो मुझे C: \\ Program Files \\ Microsoft Office \\ OFFICE11 \\ exeEL.EXE.config मिलती है, जो मेरी कॉन्फिग फाइल नहीं है ... क्या होना चाहिए मैं करता हूँ
सतीश

यह सही कॉन्फ़िगरेशन फ़ाइल है ... यह सिर्फ यह हो सकता है कि आप इसकी उम्मीद नहीं कर रहे थे। वास्तव में इस मामले में मेरा मानना ​​है कि C: \ Program Files \ Microsoft Office \ OFFICE11 \ Excel.EXE.config वैश्विक कॉन्फ़िगर है, और यदि आप किसी असेंबली में Excel.EXE.config नाम की असेंबली को अपनी असेंबली के रूप में रखते हैं, तो यह है जहां से आपकी ऐप सेटिंग पढ़ी जाएंगी। विवरण के लिए ये लिंक देखें: dotnet247.com/247reference/msgs/56/281797.aspx stackoverflow.com/questions/2288575/…
Bittercoder


7

यह:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);

मेरे लिए ठीक काम करता है।

ध्यान दें कि ConfigurationManagerमें है System.Configurationनाम स्थान (ताकि आप संभावना एक चाहता हूँ using System.Configuration;बयान), और कहा कि जब से तुम क्या में पढ़ा एक स्ट्रिंग प्रकार है आप पार्स करने के लिए क्या आप एक संख्या के रूप में उपयोग करने के लिए पढ़ने के लिए की आवश्यकता होगी।

इसके अलावा, सुनिश्चित करें कि आप system.configuration.dllअपनी परियोजना में एक संदर्भ के रूप में सेट करते हैं या स्क्रिप्ट का निर्माण करते हैं।


क्या संदर्भ है जो कॉन्फ़िगरेशन मैनजर.ऐपसेटिंग आई। नेट 2.0 फ्रेमवर्क प्राप्त करने के लिए जोड़ा जाना चाहिए
सैथिश

1
आप के लिए एक संदर्भ की जरूरत है System.Configuration.dllConfigurationManagerवर्ग .NET 2.0 में जोड़ा गया है, ताकि आप ठीक होना चाहिए।
माइकल बूर

7

कारण सरल है, आपकी कॉल ConfigurationSettings.AppSettingsआवश्यक कॉन्फ़िगरेशन फ़ाइल को वापस नहीं कर रही है। कृपया निम्नलिखित में से कोई भी तरीका आज़माएँ:

  • सुनिश्चित करें कि आपके एप्लिकेशन कॉन्‍फ़िगर का आपके ऐप्लिकेशन की exe फ़ाइल के समान नाम है - एक्सटेंशन के साथ .config जैसे कि MyApp.exe .config।
  • या आप उपयोग कर सकते हैं ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

उम्मीद है की यह मदद करेगा


3

अपनी परियोजना के पुनर्निर्माण की कोशिश करें - यह App.configबिल्ड लाइब्रेरी में "<YourProjectName.exe> ​​.config" की सामग्री की प्रतिलिपि बनाता है ।


2

App.config में कुंजी "StartMonthColumn" भी जोड़ें, जिससे आप अनुप्रयोग चलाते हैं, उदाहरण के लिए परीक्षण प्रोजेक्ट के App.config में।

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