2009-08-14 12 views
5

मैं एक app.config फ़ाइल है, जो निम्नलिखितनेट ConfigurationManager app.config भ्रम

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name ="PowershellSnapIns" type ="System.Configuration.DictionarySectionHandler,System"/> 
    </configSections> 

    <PowershellSnapIns> 
     <add key="SnapIn1" value="WebAdministration" /> 
     <add key="SnapIn2" value="Jimmy Hendrix" /> 
     <add key="SnapIn3" value="..." /> 
    </PowershellSnapIns> 
</configuration> 

मैं इसे पढ़ने के लिए ConfigurationSettings वर्ग का उपयोग करने के लिए जा रहा था होता है मिल गया है, लेकिन वह मान्य नहीं है। यह उपयोग करने के लिए काफी सरल था। अब मुझे कॉन्फ़िगरेशन मैनेजर क्लास का उपयोग करना है, और अब मेरे पास यह कोड पढ़ने के लिए है।

System.Configuration.Configuration config = 
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

IDictionary SnapInList = (IDictionary) config.GetSection("PowershellSnapIns"); 

लेकिन यह त्रुटि से बाहर रहता है। मैंने app.config गुणों को प्रतिलिपि बनाने के लिए प्रतिलिपि बनाने के लिए बदल दिया है, लेकिन यह स्वीकार करता है कि यह फ़ाइल नहीं ढूंढ सकता है। अपवाद का कहना है कि यह TestConsole.vshost.exe.config की तलाश में है। क्या vs2k8sp1 अब आपके लिए app.config का नाम बदलता है, और यदि हां, तो मैं गलत क्या कर रहा हूं? निश्चित रूप से मुझे vhost को डीबग करने के लिए app.config फ़ाइल का नाम बदलने की आवश्यकता नहीं है। मुझे रिलीज में पता है कि शायद इसका नाम TestConsole.exe.config रखा जा रहा है। तो क्या गलत हो रहा है? क्या यह कोड गलत है या क्या?

+2

.NET "त्रुटि नहीं" करता है। यह अपवाद फेंकता है। जब कोई अपवाद बेकार होता है, और आपके प्रोग्राम को "काम नहीं करने" का कारण बनता है, तो आपको अपने प्रश्न में पूरा अपवाद पोस्ट करना चाहिए। अपवाद को पकड़ें, फिर 'ex.ToString() 'के परिणाम पोस्ट करें। –

+0

करेगा। मैंने फ़ाइल को TestConsole.vhost.exe.config पर नाम बदलने का प्रयास किया लेकिन यह खाली वापस आया। –

+0

हाय जॉन, यह अपवाद है। PowershellSnapI ns के लिए कॉन्फ़िगरेशन सेक्शन हैंडलर बनाने में त्रुटि हुई: फ़ाइल या असेंबली 'सिस्टम' या इसकी निर्भरताओं में से कोई भी लोड नहीं हो सका। Sys tem निर्दिष्ट फ़ाइल नहीं ढूंढ सकता है। (सी: \ उपयोगकर्ता \ प्रशासक \ दस्तावेज़ \ विजुअल स्टू डीओओ 2008 \ प्रोजेक्ट्स \ टेस्टकोनोल \ टेस्टकंसोल \ bin \ Debug \ TestConsole.vshost.exe.confi जी लाइन 4) –

उत्तर

12

यहाँ कैसे मैंने किया है:

बनाओ सुनिश्चित करें कि System और System.Configuration.dll अपने बिन निर्देशिका में उपलब्ध हैं। आप दोनों डीएलएस के संदर्भ को जोड़कर ऐसा करते हैं और copy local विशेषता true पर सेट करते हैं।

- अपने App.Config फ़ाइल में सुनिश्चित करें, copy local गुण false पर सेट करें।

निम्न विधि प्रयोग

:

public static string XMLCheck 
{ 
    get 
    { 
     var section =(Hashtable)ConfigurationManager.GetSection("PowershellSnapIns"); 
     return (string)section["SnapIn1"]; 

    } 
} 

-इस XMLCheck लौटना चाहिए "WebAdministration"

+0

कुंजी कोई फर्क नहीं पड़ता, क्योंकि मुझे कुंजी को जानने की आवश्यकता नहीं है, केवल मूल्य, जो शक्तिशक्ति स्नैपिन नाम है। –

+0

उत्तर अद्यतन किया गया। – Graviton

+0

हाय नागू जल्द हुई, यह काम किया। धन्यवाद। अब मैं देख सकता हूं (हिंडसाइट सुंदर है) कि कॉन्फ़िगरेशन मैनेजर क्लास स्थिर है। धन्यवाद। –

1

वी.एस. अपने साथ बिन निर्देशिका में app.config yourappname.exe के लिए और इसे स्थानों नाम बदलता है। exe

क्या आप पुष्टि कर सकते हैं कि फ़ाइल आपके exe के साथ बिन निर्देशिका में मौजूद है।

+1

फ़ाइल TestConsole.vhost.exe.config Visual Studio 2008 \ Projects \ TestConsole \ TestConsole \ bin \ Debug निर्देशिका में है। –