2011-02-03 16 views
14

मेरे पास दो प्रोजेक्ट हैं:किसी अन्य असेंबली से app.config को कैसे पढ़ा जाए?

  • कंसोल प्रोजेक्ट (Test.exe)
  • क्लास लाइब्रेरी प्रोजेक्ट (Test.Data.dll)

मेरी क्लास लाइब्रेरी प्रोजेक्ट में app.config फ़ाइल है।

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="TestEntities" connectionString="metadata=res://*/DBNews.csdl|res://*/DBNews.ssdl|res://*/DBNews.msl;provider=System.Data.SqlClient;provider connection string=&quot;{0}&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

कंसोल प्रोजेक्ट से मैं क्लास लाइब्रेरी से सेटिंग्स तक पहुंचना चाहता हूं, इसलिए मैंने कोशिश की है:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll"); 
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer 
// seems to be the wrong assembly. 

और:

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config"); 
// invalid exePath 

मैं DLL के कैसे उपयोग कर सकता हूं app.config?

+0

सही उत्तर यहां दिया गया है। यह काम करता है http://stackoverflow.com/questions/53545/get-the-app-config-of-another-exe –

उत्तर

10

डीएलएल के पास रनटाइम पर अपना ऐप.कॉन्फिग नहीं है। एप.कॉन्फिग केवल एंटीटी फ्रेमवर्क डिजाइनर के लिए है।

निष्पादन के दौरान, डीएलएल एप्लिकेशन की app.config फ़ाइल से मूल्यों को पढ़ने का प्रयास करेगा। एंटीटी फ्रेमवर्क कनेक्शन के लिए, इसका मतलब है कि आपको कनेक्शन की जानकारी को एप्लिकेशन के app.config में कॉपी करना होगा।

5

.NET केवल निष्पादन असेंबली के लिए सबसे अधिक App.config फ़ाइल लोड करेगा। यदि आपके उपग्रह असेंबली में App.config फ़ाइलें हैं, तो उन्हें निष्पादन असेंबली द्वारा पार्स नहीं किया जाएगा।

उपग्रह असेंबली के App.config से सेटिंग्स प्राप्त करने के लिए आपको उन सेटिंग्स को अपने निष्पादन असेंबली के App.config में ले जाना होगा (प्रतिलिपि)।

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