एक पुस्तकालय के लिए app.config


83

मैं VS2008 विज़ार्ड द्वारा एक वर्ग पुस्तकालय के लिए उत्पन्न एक app.config फ़ाइल नहीं देख सकता। मेरे शोध में मैंने पाया कि एक एप्लिकेशन में केवल एक app.config मौजूद है।

क्या यह एक बुरी बात है। किसी क्लास लाइब्रेरी में app.config को मैन्युअल रूप से जोड़ना या कोई अन्य तरीके हैं जो क्लास लाइब्रेरी में ऐप.कॉन्फिग के उद्देश्य को पूरा करेगा?

मुझे app.config फ़ाइल के अंदर log4net config जानकारी संग्रहीत करने की आवश्यकता है।


3
आप अपनी निष्पादन योग्य प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइल को अपनी लाइब्रेरी से पढ़ सकते हैं।
अकरम शाहदा १५'११

जवाबों:


102

आपको आमतौर पर एक क्लास लाइब्रेरी प्रोजेक्ट में एक फ़ाइल नहीं जोड़ना चाहिए app.config; यह कुछ दर्दनाक झुकने और अपने हिस्से पर घुमा के बिना उपयोग नहीं किया जाएगा। यह लाइब्रेरी प्रोजेक्ट को बिल्कुल भी नुकसान नहीं पहुंचाता है - यह सिर्फ कुछ भी नहीं करेगा।

इसके बजाय, आप उस एप्लिकेशन को कॉन्फ़िगर करते हैं जो आपके पुस्तकालय का उपयोग कर रहा है; इसलिए आवश्यक कॉन्फ़िगरेशन जानकारी वहां जाएगी। प्रत्येक एप्लिकेशन जो आपके पुस्तकालय की संभावना का उपयोग कर सकता है, उसकी अलग-अलग आवश्यकताएं होंगी, इसलिए यह वास्तव में तार्किक अर्थ भी बनाता है।


23
आपके लिए अच्छा हैं। मैं हालांकि आपके सवाल का जवाब नहीं दे रहा था। आपके पास स्पष्ट रूप से कुछ प्रकार की घर-निर्मित कॉन्फ़िगरेशन प्रणाली है जो यहां सवाल पूछने वाले व्यक्ति पर लागू नहीं होती है।
एंड्रयू बार्बर

1
मेरे पास एक सेलेनियम वेबड्राइवर क्लास लाइब्रेरी है जिसे मैं अपने सभी परीक्षण मामलों के लिए NUnit से चलाता हूं। बल्कि मुझे NUnit में कॉन्फ़िगरेशन सेट करने के बारे में चिंता करने की ज़रूरत नहीं है। इसे पूरा करने के लिए मैं कैसे मुड़ सकता हूं और मुड़ सकता हूं? :-)
मैकगिवर

3
यह पता लगाया ... अगर NUnit का उपयोग कर रहे हैं, तो अपने app.config फ़ाइल को अपने नाम के समान नाम के साथ दर्ज करें। \ n "प्रोजेक्ट फ़ाइल नाम। उदाहरण के लिए, यदि आपने अपनी परियोजना को "ClassLibraryA.nunit" कहा है, तो अपनी कक्षा की लाइब्रेरी कॉन्फ़िगरेशन फ़ाइल का नाम "ClassLibraryA.config" रखें। उन्हें एक ही फ़ोल्डर / निर्देशिका में भी निवास करना होगा। NUnit वास्तव में इसे मुख्य कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग कर रहा है .... System.Configuration (.NET टैब में) का संदर्भ जोड़ें .... और इस कोड का उपयोग करें: string settingValue = configurationManager.AppSettings ["settingName"];
मैकगिवर

2
एकीकरण परीक्षण होने पर आप चीजों को स्थापित करने की सिफारिश कैसे करेंगे? मेरे लिए कनेक्शन स्ट्रिंग के साथ उस परीक्षण लाइब्रेरी में एक app.config होना तर्कसंगत लगता है।
टॉमस जैनसन

2
क्या होगा अगर आप एप्लिकेशन को कॉन्फ़िगर नहीं कर सकते क्योंकि आप इसके मालिक नहीं हैं।
वोल्टेज स्पाइक

50

मुझे नहीं पता कि यह उत्तर पहले ही क्यों नहीं दिया गया है:

एक ही पुस्तकालय के विभिन्न कॉलर्स, सामान्य रूप से, विभिन्न कॉन्फ़िगरेशन का उपयोग करेंगे। इसका तात्पर्य यह है कि विन्यास निष्पादन योग्य अनुप्रयोग में रहना चाहिए , न कि कक्षा पुस्तकालय में।

आप वर्ग पुस्तकालय परियोजना के भीतर एक app.config बना सकते हैं। इसमें लाइब्रेरी में आपके द्वारा बनाई गई वस्तुओं के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन होंगे। उदाहरण के लिए, इसमें कनेक्शन स्ट्रिंग्स होंगे यदि आप क्लास लाइब्रेरी के भीतर एंटिटी फ्रेमवर्क मॉडल बनाते हैं।

हालांकि, इन सेटिंग्स का उपयोग लाइब्रेरी को कॉल करने वाले निष्पादन योग्य एप्लिकेशन द्वारा नहीं किया जाएगा। इसके बजाय, इन सेटिंग्स को लाइब्रेरी.dll.config फ़ाइल से app.config या web.config के कॉलर में कॉपी किया जा सकता है, ताकि उन्हें कॉलर के लिए विशिष्ट होने के लिए बदला जा सके, और उस वातावरण में जिसमें कॉलर है तैनात किया गया।

यह 1 डे के बाद से .NET के साथ ऐसा ही है।


2
लेकिन मुझे क्या करना चाहिए अगर मुझे क्लास लाइब्रेरी से वेबसर्से कार्यक्षमता को कॉल करने की आवश्यकता है? VS ने एक डिफ़ॉल्ट ऐप बनाया है ।config लेकिन webservice फ़ंक्शन को कॉल करने का प्रयास करते समय मेरा एप्लिकेशन क्रैश हो गया - इसे कॉन्फ़िगरेशन प्रविष्टियां नहीं मिल सकती हैं ...
Laserson

आपको उन तत्वों को कॉपी करना होगा जिन्हें कक्षा के पुस्तकालय app.config में app.config या web.config में कक्षा पुस्तकालय के कॉलगर्ल में रखा गया है। यह कॉलर को कॉन्फ़िगरेशन के नियंत्रण में रहने देता है। उदाहरण के लिए, कॉलर अब उस सेवा के URL को बदल सकता है जिसे आपकी कक्षा लाइब्रेरी कॉल करती है, और आपकी कक्षा की लाइब्रेरी को भी परिवर्तन के बारे में पता नहीं होगा।
जॉन साउन्डर्स

6
@ जॉन सॉन्डर्स: "की आवश्यकता हो सकती है" बिल्कुल सही शब्द हैं। इसलिए ऐसी स्थितियाँ हो सकती हैं जहाँ कॉन्फ़िगरेशन सेटिंग्स केवल प्रति सर्वर (जैसे कनेक्शन स्ट्रिंग्स) में भिन्न होती हैं और dll के लिए यह अधिक सुविधाजनक होता है कि इसका स्वयं के कॉन्फ़िगरेशन की तुलना में यह प्रत्येक असेंबली के लिए उस समय के आस-पास की प्रतिलिपि बनाता है जो dll का उपयोग करता है। मेरी राय में Microsofts / .NET पसंदीदा उपयोग एक पवित्र कब्र नहीं है। यह वास्तव में निर्भर करता है, परिनियोजन परिदृश्य में सबसे सुविधाजनक क्या है। टॉड को यह बताने की कोई आवश्यकता नहीं है, उनकी राय उतनी ही महत्वपूर्ण है जितनी आपकी या माइक्रोसाफ्ट।

मुझे इस समाधान में वास्तव में दिलचस्पी है - यह मेरे लिए आदर्श लगता है। यह समझ में आता है कि लाइब्रेरी डिफ़ॉल्ट सेटिंग्स ले जाएगी, जबकि एप्लिकेशन में उन्हें ओवरराइड करने की क्षमता होगी। क्या आप इस बात पर विस्तार करेंगे कि लाइब्रेरी के ऐप से सेटिंग को कैसे प्रचारित किया जा सकता है। एग्जीक्यूटिव असेंबली के ऐप के साथ।
क्रश करें

@ क्रश: इसे "कॉपी और पेस्ट" कहा जाता है। .NET की दृढ़ता से टाइप की गई सेटिंग सुविधा थोड़ी मदद कर सकती है, क्योंकि यह असेंबली में डिफ़ॉल्ट मानों को बनाती है।
जॉन सॉन्डर्स

43

जॉन, बहुत सी राय दी गई है जो आपके प्रश्न का सही उत्तर नहीं देती है।

मैं अपना सुझाव दूंगा और फिर आपको बताऊंगा कि आपने जो मांगा है, उसे कैसे करें।

मुझे कोई कारण नहीं दिखता कि किसी असेंबली की अपनी कॉन्फ़िग फ़ाइल क्यों न हो। अनुप्रयोग स्तर पर एटमॉसी (क्या यह एक वास्तविक शब्द है?) का पहला स्तर क्यों है? समाधान स्तर पर क्यों नहीं? यह एक मनमाना, सबसे अच्छा अनुमान निर्णय है और इस तरह, एक जनमत है। यदि आप एक लॉगिंग लाइब्रेरी लिखना चाहते थे और इसके लिए एक कॉन्फ़िगरेशन फ़ाइल शामिल करना चाहते थे, जिसका उपयोग विश्व स्तर पर किया जाएगा, तो आप अंतर्निहित सेटिंग्स कार्यक्षमता में हुक क्यों नहीं लगा सकते थे? हम सब कर चुके हैं ... अन्य डेवलपर्स को "शक्तिशाली" कार्यक्षमता प्रदान करने की कोशिश की। कैसे? यह धारणा बनाकर कि स्वाभाविक रूप से प्रतिबंधों का अनुवाद। ठीक यही एमएस ने सेटिंग फ्रेमवर्क के साथ किया था, इसलिए आपको इसे थोड़ा "मूर्ख" करना होगा।

सीधे अपने प्रश्न का उत्तर देने के लिए, बस कॉन्फ़िगरेशन फ़ाइल को मैन्युअल रूप से जोड़ें (xml) और इसे अपनी लाइब्रेरी से मिलान करने के लिए और "कॉन्फ़िगरेशन" एक्सटेंशन को शामिल करने के लिए नाम दें। उदाहरण:

MyDomain.Mylibrary.dll.Config

इसके बाद, फ़ाइल को एक्सेस करने और सेटिंग को लोड करने के लिए कॉन्फ़िगरेशन प्रबंधक का उपयोग करें:

string assemblyPath = new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath;
Configuration cfg = ConfigurationManager.OpenExeConfiguration(assemblyPath);
string result = cfg.AppSettings.Settings["TEST_SETTING"].Value;

ध्यान दें कि यह पूरी तरह से मशीन का समर्थन करता है। भले ही आपने एप्लिकेशन कॉन्फिग फ़ाइल को स्पष्ट रूप से चुना हो, भले ही वह पदानुक्रम हो। दूसरे शब्दों में, यदि सेटिंग नहीं है, तो यह उच्चतर हल करेगा। सेटिंग मशीन.कॉन्फ़िग प्रविष्टियों को भी ओवरराइड करेंगी।


3
-1: आपकी राय, प्रति से, महत्वपूर्ण नहीं है। तथ्य महत्वपूर्ण होंगे। .NET, डे 1 के बाद से बनाया गया था ताकि लाइब्रेरी के कॉलर्स लाइब्रेरी के भीतर वस्तुओं के कॉन्फ़िगरेशन का निर्धारण करें। यह केवल एक चीज है जो कॉन्फ़िगरेशन के लिए वास्तविक अर्थ बनाती है, क्योंकि लाइब्रेरी के विभिन्न कॉलर्स को अलग-अलग कॉन्फ़िगरेशन की आवश्यकता हो सकती है।
जॉन सॉन्डर्स

19
@JohnSaunders "लाइब्रेरी के अलग-अलग कॉलर्स को अलग-अलग कॉन्फ़िगरेशन की आवश्यकता हो सकती है।" वास्तव में, उन्हें "अलग-अलग कॉन्फ़िगरेशन" की आवश्यकता हो सकती है, और आपका तर्क उन सभी मामलों में सही अर्थ बनाता है जहां कॉन्फ़िगरेशन कॉलर पर निर्भर करता है। लेकिन ऐसे कई मामले हैं जहां कॉन्फ़िगरेशन का उपयोग क्लास लाइब्रेरी के लिए आंतरिक रूप से किया जाता है, और कॉन्फ़िगरेशन बिल्कुल समान है, कोई फर्क नहीं पड़ता कि कॉलर क्या है। यदि आपके पास लाइब्रेरी का उपभोग करने वाले 10 एप्लिकेशन हैं, तो 10 कॉन्फ़िगरेशन फ़ाइलों में सटीक कॉन्फ़िगरेशन को कॉपी और पेस्ट करना बदतर होना चाहिए।
wired_in

3
@ToddBeaulieu: मुझे लगता है कि आपको जो शब्द चाहिए वह है 'परमाणुता'।
निकोडेमस 13

3
एक प्लगइन वास्तुकला में, यह वास्तव में समझ में आता है अगर सभी प्लगइन्स की अपनी स्वयं की फाइल होती है।
डेवार्ट

4
@RMuesi Noone ने कहा कि यह कभी नहीं बदलता है, बस यह पुस्तकालय के कॉलर पर निर्भर नहीं करता है। कॉन्‍फ़‍िगरेशन इस बात पर निर्भर करता है कि आप पुस्‍तक बनाम उत्‍पादन रिलीज़ पर डिबगिंग कर रहे हैं या नहीं। यह उस वातावरण के आधार पर बदल सकता है, जिसके लिए आप निर्माण कर रहे हैं, आदि
wired_in

6

वास्तव में, वर्ग पुस्तकालय आप कार्यान्वित कर रहे हैं, से जानकारी प्राप्त करने है app.config अनुप्रयोग के भीतर है कि यह लेने वाली है, इसलिए, वी.एस. में .net में वर्ग पुस्तकालयों के लिए विन्यास को लागू करने के लिए सबसे सही तरीका तैयार करने के लिए है app.config में पुस्तकालयों विन्यास की तरह, यह सब कुछ उपभोग करने के लिए आवेदन।

मैंने log4net के साथ थोड़ा काम किया है, और मैंने पाया कि जिसने एप्लिकेशन तैयार किया था, उसके पास हमेशा मुख्य app.config के अंदर log4net कॉन्फ़िगरेशन के लिए एक अनुभाग था ।

उम्मीद है आपको यह जानकारी उपयोगी लगेगी।

आप देखें, और आपके द्वारा पाए गए समाधान के बारे में टिप्पणी पोस्ट करें।

संपादित करें:

अगले लिंक पर आपके पास log4net के लिए अनुभाग के साथ एक app.config है :

http://weblogs.asp.net/tgraham/archive/2007/03/15/a-realistic-log4net-config.aspx


2
+1 बिल्कुल; app.configवास्तविक कार्यक्रम से भरी हुई है कि अंततः चलाता है ... न कि व्यक्तिगत वर्ग पुस्तकालयों। यह स्पष्ट रूप से थोड़ा भ्रमित है कि कितने लोग इसे बहुत मूल तथ्य नहीं जानते हैं।
एंड्रयू बार्बर

हो सकता है कि लोग जावा भाषा से आते हैं और आपके पास एक लॉग 4java.properties और आपके आवेदन के लिए एक अलग गुण फ़ाइल है।
Amedio

6

यदि आप अपने प्रोजेक्ट लॉगिंग को कॉन्फ़िगर करने के लिए लॉग 4 नेट का उपयोग करना चाहते हैं, तो क्लास लाइब्रेरी का उपयोग करते समय, किसी भी कॉन्फ़िगरेशन फ़ाइल की कोई वास्तविक आवश्यकता नहीं है। आप अपने log4net लकड़हारे को एक कक्षा में कॉन्फ़िगर कर सकते हैं और उस कक्षा को लाइब्रेरी के रूप में उपयोग कर सकते हैं।

जैसा कि log4net इसे कॉन्फ़िगर करने के लिए सभी विकल्प प्रदान करता है।

कृपया नीचे कोड पाएं।

public static void SetLogger(string pathName, string pattern)
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = pattern;
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = false;
            roller.File = pathName;
            roller.Layout = patternLayout;
            roller.MaxSizeRollBackups = 5;
            roller.MaximumFileSize = "1GB";
            roller.RollingStyle = RollingFileAppender.RollingMode.Size;
            roller.StaticLogFileName = true;
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);

            MemoryAppender memory = new MemoryAppender();
            memory.ActivateOptions();
            hierarchy.Root.AddAppender(memory);

            hierarchy.Root.Level = log4net.Core.Level.Info;
            hierarchy.Configured = true;
      }

अब XmlConfigurator.Configure (new FileInfo ("app.config")) को कॉल करने के बजाय, आप सीधे Global.asax एप्लिकेशन फ़ंक्शन में लकड़हारा सेट करने के लिए वांछित पथ और पैटर्न के साथ SetLogger को कॉल कर सकते हैं।

और त्रुटि लॉग करने के लिए नीचे दिए गए कोड का उपयोग करें।

        public static void getLog(string className, string message)
        {
            log4net.ILog iLOG = LogManager.GetLogger(className);
            iLOG.Error(message);    // Info, Fatal, Warn, Debug
        }

निम्नलिखित कोड का उपयोग करके आपको न तो एक भी लाइन लिखने की जरूरत है न तो एप्लिकेशन web.config में और न ही लाइब्रेरी के app.config के अंदर।


2
मैंने महसूस किया कि यह सबसे अच्छा उत्तर है ... चर्चा करने के बजाय कि क्या कॉन्फ़िगरेशन फ़ाइल को किसी लाइब्रेरी के लिए अनुमति दी जानी चाहिए ... इस उत्तर से ओपीईनेट का उपयोग करने के ओपी के प्रश्न का उत्तर मिलता है
सौरव

1
उदाहरण के लिए लॉग 4नेट का उपयोग किए गए प्रश्न के बावजूद, वास्तविक प्रश्न सामान्य रूप से कॉन्फ़िगर के बारे में है। मैं कहूंगा कि log4net के बारे में उत्तर वास्तव में अप्रासंगिक हैं।
बिंकी

4

असल में, कुछ दुर्लभ मामलों के लिए आप ऐप को डाउनलोड कर सकते हैं। क्लास लाइब्रेरियों में (मैन्युअल रूप से जोड़कर) और इसे OpenExeConfiguration द्वारा पार्स करें ।

 var fileMap =
    new ExeConfigurationFileMap {ExeConfigFilename = 
    @"C:\..somePath..\someName.config"};
 System.Configuration.Configuration config =
    ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
    ConfigurationUserLevel.None);

आपको वास्तव में इसकी वास्तविक आवश्यकता का अनुमान लगाना चाहिए। अमूर्त डेटा के लिए इसका सबसे अच्छा समाधान नहीं है, लेकिन "कॉन्फ़िगर अनुभाग" बहुत उपयोगी हो सकता है !!

उदाहरण के लिए, हमने अपने एन-टियर WCF आर्किटेक्चर को बिना किसी मेटाडेटा के व्यवस्थित किया, बस चैनल फैक्ट्री टी पर आधारित एकता कंटेनर और इंजेक्शन फैक्ट्री का उपयोग करके। हमने एक्सटर्नल क्लासरुलेट डीएल को सिर्फ [सर्विस कॉन्ट्रैक्ट] इंटरफेसेस और सामान्य ऐप के साथ जोड़ा। क्लाइंट से समापन बिंदु पढ़ने के लिए, और आसानी से उन्हें एक स्थान पर जोड़ / बदल सकते हैं।


3

यदि आप एक ट्रेसर / लॉगर का उपयोग कर रहे हैं, तो आप अपने परीक्षण वर्ग के पुस्तकालय में App.config जोड़ना चाहते हैं। अन्यथा कुछ भी लॉग नहीं होता है जब आप टेस्ट रनर जैसे TestDriven.Net के माध्यम से परीक्षण चलाते हैं तो ।

उदाहरण के लिए, मैं TraceSourceअपने कार्यक्रमों में उपयोग करता हूं, लेकिन परीक्षण चलाने से कुछ भी लॉग नहीं होता है जब तक कि मैं परीक्षण क्लास लाइब्रेरी के लिए ट्रेस / लॉग कॉन्फ़िगरेशन के साथ एक App.config फ़ाइल नहीं जोड़ता ।

अन्यथा, App.config को एक क्लास लाइब्रेरी में जोड़ने से कुछ नहीं होता है।


2

एक app.config के एक गैर मैनुअल निर्माण के लिए आपका जवाब विजुअल स्टूडियो प्रोजेक्ट प्रॉपर्टीज / सेटिंग्स टैब है।

जब आप कोई सेटिंग जोड़ते हैं और सहेजते हैं, तो आपका app.config अपने आप बन जाएगा। इस बिंदु पर कोड का एक गुच्छा { yourclasslibrary .Properties} नेमस्पेस होता है जिसमें आपकी सेटिंग्स के अनुरूप गुण होते हैं। सेटिंग्स खुद app.config के आवेदन सेटिंग्स सेटिंग्स में रखा जाएगा।

 <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="ClassLibrary.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>
<applicationSettings>
    <ClassLibrary.Properties.Settings>
        <setting name="Setting1" serializeAs="String">
            <value>3</value>
        </setting>
    </BookOneGenerator.Properties.Settings>
</applicationSettings>

यदि आपने Setting1 = 3 नामक एक एप्लिकेशन स्कोपिंग सेटिंग जोड़ी है, तो Setting1 नामक एक संपत्ति बनाई जाएगी। ये गुण बाइनरी के संकलन भाग में बन रहे हैं और उन्हें DefaultSettingValueAttribute के साथ सजाया गया है जो आपके द्वारा विकास के समय में निर्दिष्ट मूल्य पर सेट है।

     [ApplicationScopedSetting]
    [DebuggerNonUserCode]
    [DefaultSettingValue("3")]
    public string Setting1
    {
        get
        {
            return (string)this["Setting1"];
        }
    }

इस प्रकार अपने वर्ग पुस्तकालय कोड के रूप में आप इन गुणों का उपयोग करते हैं यदि कोई संगत सेटिंग रनटाइम कॉन्फ़िगरेशन फ़ाइल में मौजूद नहीं है, तो यह डिफ़ॉल्ट मान का उपयोग करने के लिए वापस आ जाएगी। इस तरह से एप्लिकेशन को एक सेटिंग प्रविष्टि की कमी के लिए क्रैश नहीं होगा, जो पहली बार बहुत भ्रामक है जब आप नहीं जानते कि ये चीजें कैसे काम करती हैं। अब, आप अपने आप से पूछ रहे हैं कि एक तैनात पुस्तकालय में अपने स्वयं के नए मूल्य को कैसे निर्दिष्ट कर सकते हैं और डिफ़ॉल्ट सेटिंग मूल्य का उपयोग करने से बचना चाहिए?

ऐसा तब होगा जब हम निष्पादन योग्य एप्लिकेशन को ठीक से कॉन्फ़िगर करेंगे ।config। दो कदम। 1. हम यह जानते हैं कि हमारे पास उस वर्ग पुस्तकालय के लिए एक सेटिंग्स खंड होगा और 2. छोटे संशोधनों के साथ हम निष्पादन योग्य विन्यास में कक्षा पुस्तकालय की कॉन्फ़िगरेशन फ़ाइल पेस्ट करते हैं। (वहाँ एक विधि है जहाँ आप क्लास लाइब्रेरी कॉन्फिगर फाइल को बाहरी रख सकते हैं और आप इसे एक्जीक्यूटेबल के कॉन्फिगर से संदर्भित करते हैं।

तो, आपके पास एक क्लास लाइब्रेरी के लिए एक app.config हो सकता है लेकिन अगर आप इसे मूल एप्लिकेशन के साथ ठीक से एकीकृत नहीं करते हैं तो यह बेकार है। यहां देखें कि मैंने कुछ समय पहले क्या लिखा था: लिंक


1

जब आप अपने समाधान के लिए एक क्लास लाइब्रेरी प्रोजेक्ट जोड़ते हैं तो ऐप.कॉन्फ़िग फ़ाइल का कोई स्वचालित जोड़ नहीं होता है।

मेरी जानकारी के लिए, ऐसा मैनुअल करने के बारे में कोई संकेत नहीं है। मुझे लगता है कि यह एक सामान्य उपयोग है।

Log4Net कॉन्फिगरेशन के बारे में, आपको कॉन्फिग को app.config में नहीं डालना है, आप एक ही समय में अपने प्रोजेक्ट में एक समर्पित conf फाइल और एक app.config फाइल रख सकते हैं।

यह लिंक http://log.apache.org/log4net/release/manual/configuration.html आपको दोनों तरीकों के बारे में उदाहरण देगा (app.config और standalone log4net conf फ़ाइल में अनुभाग)


यह app.configएक पुस्तकालय परियोजना में एक जोड़ने के लिए कुछ भी चोट नहीं करता है , नहीं। लेकिन न तो इसका उपयोग किया जाएगा।
एंड्रयू बार्बर

1
@AndrewBarber यह एक परीक्षण परियोजना में इस्तेमाल किया जाएगा। देखें stackoverflow.com/a/31389495
Binki

0

मैं क्लास लाइब्रेरी के अंदर कनेक्शनस्ट्रीम और इसी तरह के मूल्यों को स्टोर करने के लिए Properties.Settings का उपयोग करने की सलाह दूंगा। यह वह जगह है जहां सभी कनेक्शन तार दृश्य स्टूडियो के सुझाव से स्टोर होते हैं जब आप उदाहरण के लिए एक टेबल एडेप्टर जोड़ने की कोशिश करते हैं। यहाँ छवि विवरण दर्ज करें

और फिर वे क्लैस लाइब्रेरी में हर जगह इस कोड का उपयोग करके सुलभ होंगे

var cs=  Properties.Settings.Default.[<name of defined setting>];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.