2015-12-23 23 views
7

मैं वीएस2015 सी # इंटरैक्टिव विंडो में कुछ कोड चलाने की कोशिश कर रहा हूं जो एक डीएल की app.config फ़ाइल में संग्रहीत कनेक्शन स्ट्रिंग का उपयोग करता है जिसे मैं #r फ़ंक्शन का उपयोग कर संदर्भित कर रहा हूं।सी # इंटरैक्टिव विंडो से कॉन्फ़िगरेशन फ़ाइल एक्सेस करना

यदि मैं ConfigurationManager में देखता हूं तो इसमें एक कनेक्शन स्ट्रिंग है लेकिन यह एक अलग है जिसे इसे किसी अन्य कॉन्फ़िगरेशन फ़ाइल से संदर्भित किया जाना चाहिए।

+2

'ConfigurationManager' app.config तक पहुँचता है असेंबली निष्पादित करने के लिए। हमेशा कनेक्शन स्ट्रिंग जोड़ें जो आपका एप्लिकेशन निष्पादन असेंबली के app.config तक पहुंचता है। – Marshal

उत्तर

0

यदि आप चाहते हैं कि एक विशिष्ट असेंबली के लिए कॉन्फ़िगरेशन को स्पष्ट रूप से लोड करना है और स्पष्ट रूप से इसे एक्सेस करना है, तो आप ConfigurationManager class के OpenExeConfiguration method का उपयोग कर सकते हैं।

इस test.dll.config विन्यास फाइल के साथ एक Test.dll विधानसभा लें:

<configuration> 
    <connectionStrings> 
    <add 
     name="MyConnectionString" 
     connectionString="my connection string" 
     providerName="System.Data.SqlClient" 
    /> 
    </connectionStrings> 
</configuration> 

आप कैमरा इस तरह कॉन्फ़िगरेशन फ़ाइल को लोड:

> #r "c:\temp\test.dll" 
> #r "System.Configuration" 
> using System.Configuration; 
> ConfigurationManager.OpenExeConfiguration(@"c:\temp\test.dll").ConnectionStrings.ConnectionStrings["MyConnectionString"].ConnectionString 
"my connection string" 
+0

यह कॉन्फ़िगरेशन विवरण प्राप्त करता है लेकिन यह कॉन्फ़िगरेशन सेटिंग्स के साथ इसे विलय नहीं करता है जिसे मैं संदर्भ कॉल कर रहा हूं। मुझे या तो निष्पादन असेंबली सेटिंग्स के साथ कॉन्फ़िगरेशन सेटिंग्स को मर्ज करने की आवश्यकता है या मुझे कॉन्फ़िगरेशन फ़ाइल को संपादित करने की आवश्यकता है Roslyn का उपयोग कर रहा है। यकीन नहीं है कि यह कहां है ... –

+0

"Roslyn" के साथ कुछ लेना देना नहीं है। "Roslyn" संकलक और विन्यास लोडिंग एक रनटाइम सुविधा है। –

+0

यही कारण है कि मैंने स्पष्ट रूप से कहा। आप उस फ़ाइल से कॉन्फ़िगरेशन को लोड किए गए कंडिग्रिशन 'सिस्टम में कॉन्जेक्ट करने का प्रयास कर सकते हैं। कॉन्फ़िगरेशन। कॉन्फ़िगरेशन प्रबंधक। गेटसेक्शन ("yoursection") '। लेकिन यह काम नहीं करेगा अगर वह कॉन्फ़िगरेशन केवल पढ़ने के लिए है। या आप csi.exe और csi.exe.config को पकड़ सकते हैं और इसमें अपनी कॉन्फ़िगरेशन जोड़ सकते हैं। –

संबंधित मुद्दे