2016-09-15 12 views
6

मेरे पास एक मानक .NET 4.5.2 लाइब्रेरी है जिसे मैं वर्षों से उपयोग कर रहा हूं। यह ConfigurationManager.AppSettings पर निर्भरता है जिसका अर्थ है कि मुझे यह सुनिश्चित करना होगा कि सेटिंग्स का एक निश्चित सेट मेरे ऐप या web.config फ़ाइलों के ऐप सेटिंग्स अनुभाग में है। इन मानों को पास करने का कोई तरीका नहीं है। आपको उन्हें ऐप सेटिंग्स अनुभाग में रखना होगा।.NET कोर उपभोक्ता मानक .NET लाइब्रेरी का उपयोग कर कॉन्फ़िगरेशनमैनेजर.एपसेटिंग

मैं .NET कोर में एक नई परियोजना शुरू कर रहा हूं लेकिन Net452 को लक्षित कर रहा हूं ताकि मैं कई पुस्तकालयों का लाभ उठा सकूं (जो अब तक ठीक काम कर रहा है)।

मैं इस नवीनतम लाइब्रेरी के साथ समस्या का सामना कर रहा हूं क्योंकि मैं यह नहीं समझ सकता कि सेटिंग्स को व्यवस्थित तरीके से कैसे सेट किया जाए ताकि कॉन्फ़िगरेशन मैनेजर.एप सेटिंग्स उन्हें ढूंढ सकें।

उन्हें appSettings.json में डालकर काम नहीं लग रहा है। उन्हें web.config में डालने से काम नहीं लगता है, या तो।

क्या यह भी संभव है?

धन्यवाद!

उत्तर

6

हां यह संभव है कि आप क्या चाहते हैं, लेकिन आपको मैन्युअल रूप से करना चाहिए (मुझे नहीं पता कि कोई आसान तरीका है या नहीं)।

मान लें कि आप नीचे की तरह appsettings.json में कुछ सेटिंग है:

{ 
    "AppSettings" : { 
     "Setting1": "Setting1 Value" 
    } 
} 

Startup.cs निर्माता में मूल्य के साथ सेट ConfigurationManager.AppSettings:

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 
     Configuration = builder.Build(); 

     // copy appsetting data into ConfigurationManager.AppSettings 
     var appSettings = Configuration.GetSection("AppSettings").GetChildren(); 
     foreach (var setting in appSettings.AsEnumerable()) 
     { 
      ConfigurationManager.AppSettings[setting.Key] = setting.Value; 
     } 
    } 

और वर्ग पुस्तकालय में मूल्य प्राप्त:

var conStr = ConfigurationManager.AppSettings["Setting1"].ToString(); 
+2

इस टिप के लिए धन्यवाद! एक अतिरिक्त बात यह है कि आपको सिस्टम पर निर्भरता की आवश्यकता होगी। कॉन्फ़िगरेशन। एब्स्ट्रेशंस (प्रोजेक्ट.जेसन में) ताकि आप सिस्टम में खींच सकें। कॉन्फ़िगरेशन नेमस्पेस ताकि यह कॉन्फ़िगरेशन मैनेजर क्लास पा सके। लेकिन यह एक चैंप की तरह काम करता है! – retsvek