2009-10-21 18 views
7

मेरी समझ यह है कि .NET वास्तव में डीएलएल के लिए कॉन्फ़िगरेशन फ़ाइलों को नहीं करता है - केवल मुख्य निष्पादन योग्य या वेब ऐप को कॉन्फ़िगरेशन फ़ाइल मिलती है, और उसमें से निष्पादित निष्पादन योग्य/वेब ऐप द्वारा संदर्भित सभी डीएलएल।.NET DLL सेटिंग्स और कॉन्फ़िगर करते हैं जब कोई वेब संदर्भ होता है - क्या चल रहा है?

लेकिन वीएस 2008 में, यदि आप क्लास लाइब्रेरी (डीएलएल) प्रोजेक्ट में कोई वेब संदर्भ जोड़ते हैं, तो यह एक सेटिंग सेटिंग्स सेटिंग्स और प्रोजेक्ट में एक app.config फ़ाइल जोड़ता है। उनमें वेब संदर्भ के लिए मुख्य यूआरएल होता है।

तो इन फ़ाइलों के लिए क्या हैं? डीएलएल के लिए उन्हें असंतुष्ट पढ़ने का कोई तरीका नहीं है, है ना?

संपादित करें: app.config और सेटिंग्स.Settings की सामग्री हालांकि एक अंतर बनाने लगती है: हालांकि (उदाहरण के लिए) डीएलएल प्रोजेक्ट की app.config फ़ाइल में वेब संदर्भ यूआरएल कोई फर्क नहीं पड़ता है, लेकिन अगर आप app.config में यूआरएल को संपादित करते हैं और फिर सेटिंग.Settings फ़ाइल खोलते हैं, जो आपने app.config में किए गए परिवर्तनों को सेटिंग्स सेटिंग्स में कॉपी किया है। और फिर, डीएलएल रन टाइम पर नए मूल्य को उठाता है। यह यह कैसे कर रहा है?

संपादित करें: यहां मेरा भ्रम का हिस्सा है क्योंकि मैं सेटिंग.Settings और app.config और वे एक-दूसरे से कैसे संबंधित हैं, के बीच अंतर पर बहुत स्पष्ट नहीं हैं, इसलिए हो सकता है कि लोग भी उस मुद्दे से मदद कर सकें।

उत्तर

6

DLL उन्हें पढ़ने के लिए के लिए कोई तरीका नहीं है, लेकिन वे क्या वे असली सेटिंग्स में शामिल करने के लिए चाहते हो सकता है के अपने DLL/कॉन्फ़िग फ़ाइल की एक उपभोक्ता के लिए मजबूत संकेत कर रहे हैं

संपादित

ओपी द्वारा टिप्पणी के जवाब में - सेटिंग्स में जो भी आखिरी बार संपादित किया गया है, उसे डिफ़ॉल्ट रूप से कोड में संकलित किया जाता है यदि रनटाइम पर सही नाम की कोई सेटिंग मौजूद नहीं है। तो यही कारण है कि यह काम कर रहा है।

+0

परिवर्तन Settings.Settings फाइल करने के लिए कॉपी हो और उसके बाद तो इसकी, रन टाइम पर उठाया पाने के लिए लग रहे हैं सिर्फ शो के लिए नहीं। – codeulike

+0

से ऊपर मेरा संपादन देखें, धन्यवाद। मैं app.config सेटिंग्स से संबंधित नहीं है जिस तरह से सेटिंग्स से संबंधित नहीं है। सेटिंग्स इसलिए आपका संपादन मदद करता है। – codeulike

6

दृश्य स्टूडियो इस चीज कहीं जोड़ने के लिए है और यह पता नहीं है जो आवेदन आप में रख करना चाहते हैं आप निम्न कार्य करके DLL के लिए config पहुंच सकता है:।

var config = ConfigurationManager.OpenExeConfiguration("MyDll.dll.config"); 

केवल समय मुझे यह उपयोगी लगता है जब मैंने एक तीसरे पक्ष के आवेदन के लिए एक डीएलएल के रूप में एक प्लगइन लिखा था और चाहता था कि मेरा डीएलएल कॉन्फ़िगर करने योग्य हो (ऐसा कुछ नहीं जो अक्सर मुझे संदेह करता है)।

आमतौर पर आप केवल कॉन्फ़िगरेशन भागों को स्थानांतरित करेंगे, आपको अपने app.config या web.config में आवश्यकता होगी।

संपादित करें - आपके अपडेट के संबंध में समझ में आता है। सेटिंग्स.सेटिंग अनुप्रयोग स्कोप्ड सेटिंग्स एप्लिकेशन की app.config फ़ाइल से आती हैं। एप्लिकेशन स्कोप्ड सेटिंग्स के लिए यह वास्तव में केवल एक दृढ़ता से टाइप की गई कक्षा है जो इन सेटिंग्स का प्रतिनिधित्व करती है।

+0

तो डीएलएल में सेटिंग.Settings फ़ाइलें हो सकती हैं और उन्हें रनटाइम पर पढ़ा जा सकता है? निर्माण के बाद उन फ़ाइलों की सामग्री कहां समाप्त होती है? – codeulike

+0

नहीं, सेटिंग्स के साथ डीएलएल। सेटिंग्स फ़ाइल इसे app.config/web.config से पढ़ेगी। यदि यह नहीं पाया जा सकता है तो यह इसके डिफ़ॉल्ट पर वापस आ जाएगा। – RichardOD

+0

मुझे लगता है कि मैं app.config शब्द के उपयोग के साथ, आपको भ्रमित कर रहा हूं। मेरा मतलब मुख्य अनुप्रयोग की कॉन्फ़िगरेशन फ़ाइल (MyApp.exe.config या Web.config) है। मेरे लिए DLL की कॉन्फ़िगरेशन वास्तव में MyDll.dll.config है। एचटीएच – RichardOD

-2

डीएलएल में कॉन्फ़िगरेशन फ़ाइलों से पढ़ने की संभावना है। बस DLL प्रोजेक्ट में एक app.config फ़ाइल जोड़ें, और सुनिश्चित करें कि आप DLL के अंदर से कॉन्फ़िगरेशन सेटिंग्स पढ़ते हैं। तैनात किए जाने पर, आपकी कॉन्फ़िगरेशन फ़ाइल को "MyDLL.dll.config" नाम होना चाहिए (मान लें कि आपका DLL "MyDLL.dll" नाम दिया गया है और DLL के समान फ़ोल्डर में होना चाहिए।

निम्नलिखित कोड मेरे dll से मेरी connectionstring लौटना चाहिए:

app.config को

return ConfigurationManager.AppSettings["ConnectionString"];

+4

यह काम नहीं करेगा। – RichardOD

+0

इसके अलावा, जो मैं पूछ रहा हूं वह नहीं है। मैं नहीं पूछ रहा हूं कि एक डीएलएल के साथ कॉन्फ़िगरेशन फ़ाइल कैसे काम करें, मैं पूछ रहा हूं कि क्यों विजुअल स्टूडियो एक डीएलएल प्रोजेक्ट के लिए जोड़ने के लिए परेशान है। – codeulike

+0

.NET 4.6 में परीक्षण किया और पुष्टि की कि यह अभी भी काम नहीं करता है। – EM0