2017-07-11 19 views
7

में app.config का उपयोग करना मुझे समस्या है। मैं नेट कोर (सी #) जो इस तरह app.config का उपयोग में एक प्रोग्राम लिखने के लिए की जरूरत है:.Net कोर

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="custom" type="ConfigurationSample.CustomConfigurationSection, ConfigurationSample"/> 
    </configSections> 
    <connectionStrings> 
    <add name="sampleDatabase" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=SampleDatabase;Integrated Security=True"/> 
    </connectionStrings> 
    <appSettings> 
    <add key="sampleApplication" value="Configuration Sample"/> 
    </appSettings> 
    <custom> 
    <customConfigurations> 
     <add key="customSample" name="Mickey Mouse" age="83"/> 
    </customConfigurations> 
    </custom> 
</configuration> 

और मैं लिखने:

string connectionString = ConfigurationManager.ConnectionStrings["sampleDatabase"].ConnectionString; 
Console.WriteLine(connectionString); 

// read appSettings configuration 
string appSettingValue = ConfigurationManager.AppSettings["sampleApplication"]; 
Console.WriteLine(appSettingValue); 

और यह इंटरनेट से उदाहरण है इसलिए मैंने सोचा कि होगा काम है, लेकिन मैं अपवाद हो रही है:

System.Configuration.ConfigurationErrorsException: 'Error Initializing the configuration system.' 
Inner Exception 
TypeLoadException: Could not load type 'System.Configuration.InternalConfigurationHost' from assembly 'CoreCompat.System.Configuration, Version=4.2.3.0, Culture=neutral, PublicKeyToken=null' because the method 'get_bundled_machine_config' has no implementation (no RVA). 

मैं NuGet के माध्यम से डाउनलोड किया - स्थापित करें-पैकेज CoreCompat.System.Configuration -संस्करण 4.2.3-r4 -पूर्व और अभी भी काम नहीं करते। शायद कोई मेरी मदद कर सकता है?

+1

मुझे लगता है कि नेट नेट के लिए आप कॉन्फ़िगरेशन के लिए जेसन फाइलों का उपयोग करेंगे। उस पर देखो। – Phiter

+0

.NET कोर में आप appsettings.json का उपयोग करते हैं, app.config नहीं। –

+0

लेकिन मैंने नेट कोर के बारे में कहा और एएसपी.Net कोर – Nju

उत्तर

3
  1. आप किसी भी नेट कोर एप्लिकेशन साथ Configuration API उपयोग कर सकते हैं, न केवल ASP.NET कोर अनुप्रयोग के साथ। लिंक में दिए गए नमूने में देखें, जो दिखाता है कि कंसोल ऐप में कॉन्फ़िगर कैसे पढ़ा जाए।

  2. ज्यादातर मामलों में, JSON स्रोत (.json फ़ाइल के रूप में पढ़ें) सबसे उपयुक्त कॉन्फ़िगरेशन स्रोत है।

    नोट: जब कोई कहता है कि कॉन्फ़िगरेशन फ़ाइल appsettings.json होनी चाहिए तो भ्रमित न हों। आप किसी फ़ाइल नाम का उपयोग कर सकते हैं, जो आपके लिए उपयुक्त है और फ़ाइल स्थान अलग-अलग हो सकता है - कोई विशिष्ट नियम नहीं हैं।

    • फ़ाइल प्रारूप (INI, JSON, और XML)
    • कमान लाइन तर्क
    • :

    लेकिन, जैसा कि असली दुनिया जटिल है, वहाँ अलग अलग विन्यास प्रदाताओं में से एक बहुत हैं पर्यावरण चर

  3. और इसी तरह। आप कस्टम प्रदाता का उपयोग/लिख भी सकते हैं।

  4. दरअसल, app.config कॉन्फ़िगरेशन फ़ाइल एक एक्सएमएल फ़ाइल थी। तो आप एक्सएमएल कॉन्फ़िगरेशन प्रदाता (source on github, nuget link) का उपयोग कर सेटिंग्स को पढ़ सकते हैं। लेकिन ध्यान रखें, इसका उपयोग केवल कॉन्फ़िगरेशन स्रोत के रूप में किया जाएगा - आपके द्वारा किए जाने वाले किसी भी तर्क से आपके ऐप को कैसे लागू किया जाना चाहिए। कॉन्फ़िगरेशन प्रदाता 'सेटिंग्स' नहीं बदलेगा और आपके ऐप्स के लिए नीतियां सेट करेगा, लेकिन केवल फ़ाइल से डेटा पढ़ेगा।

+0

"जीथ्यूब पर स्रोत" लिंक टूटा हुआ है – dimaaan

+0

@dimaaan और नहीं। –

5

लिनक्स पर .NET कोर 2.0 में भी अपने सामान्य System.Configuration का उपयोग करना संभव है। इस परीक्षण के उदाहरण का प्रयास करें:

  1. एक .NET स्टैंडर्ड 2.0 लाइब्रेरी (कहते हैं MyLib.dll)
  2. जोड़ा गया NuGet पैकेज System.Configuration.ConfigurationManager v4.4.0 बनाया गया। यह इसलिए आवश्यक है क्योंकि इस पैकेज मेटा-पैकेज NetStandard.Library v2.0.0 में शामिल नहीं है (मुझे आशा है कि परिवर्तन)
  3. सभी अपने सी # वर्गों ConfigurationSection से ली गई या ConfigurationElementMyLib.dll में जाने। उदाहरण के लिए MyClass.csConfigurationSection और MyAccount.cs से ConfigurationElement से निकला है।कार्यान्वयन विवरण यहां से दायरे से बाहर हैं लेकिन Google is your friend
  4. .NET कोर 2.0 ऐप बनाएं (उदा। एक कंसोल ऐप, MyApp.dll)। .NET कोर ऐप्स फ्रेमवर्क में .exe के बजाय .dll के साथ समाप्त होते हैं।
  5. app.configMyApp में अपने कस्टम कॉन्फ़िगरेशन अनुभागों के साथ बनाएँ। यह स्पष्ट रूप से उपरोक्त # 3 में अपने वर्ग के डिजाइन से मेल खाना चाहिए। उदाहरण के लिए:
 
    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <configSections> 
     <section name="myCustomConfig" type="MyNamespace.MyClass, MyLib" /> 
     </configSections> 
     <myCustomConfig> 
     <myAccount id="007" /> 
     </myCustomConfig> 
    </configuration> 

यह है कि - आप पाएंगे कि app.config MyApp भीतर ठीक प्रकार से पार्स और MyLib काम करता है में अपने मौजूदा कोड ठीक है। यदि आप Windows (dev) से Linux (test) तक प्लेटफ़ॉर्म स्विच करते हैं तो dotnet restore चलाने के लिए मत भूलना।