2008-12-18 19 views
29

हमारे पास आईओसी कंटेनर क्लास से संबंधित मेरी app.config फ़ाइल में एक कस्टम सेक्शन है। इस खंड के लिए कॉन्फ़िगरेशन फ़ाइल को संपादित करते समय, साथ ही साथ लापता स्कीमा को सूचित करने वाले संकलक संदेशों से छुटकारा पाने के दौरान मैं इंटेलिजेंस कैसे प्राप्त कर सकता हूं।कस्टम अनुभाग के लिए app.config में इंटेलिजेंस कैसे प्राप्त करूं?

मुझे यह प्रश्न यहां मिला: app.config configSections custom settings can not find schema information, लेकिन मुझे नहीं पता कि यह मेरी समस्या पर लागू होता है या नहीं, और अगर ऐसा होता है तो उत्तर का उपयोग कैसे करें।

मुझे यह पृष्ठ How to get Intellisense for Web.config and App.config in Visual Studio .NET भी मिला, लेकिन यह एप्लिकेशन चलाने से पहले xmlns विशेषता को हटाने के लिए कहता है। क्या यह वास्तव में एकमात्र/सबसे अच्छा तरीका है? और साथ ही,

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="ServiceContainers" 
     type="LVK.IoC.RegistrationsSectionHandler, LVK"/> 
    </configSections> 
    <ServiceContainers> 
    <Registration type="DatabaseConnection" class="DatabaseConnection"> 
     <Parameter name="connectionString" type="System.String" 
      value="TYPE=MSSQL2000;SERVER=localhost;DATABASE=db"/> 
    </Registration> 
    </ServiceContainers> 
</configuration> 

मूल रूप से मैं <ServiceContainers> नोड के अंदर <R टाइप करें, और पंजीकरण IntelliSense लटकती में मेरे लिए सुझाव प्राप्त करने में सक्षम होना चाहते हैं:

यहाँ एक सरल फ़ाइल का एक उदाहरण है इसके लिए उपयुक्त गुण।

उत्तर

21

एक्सएमएल इंटेलिसेंस स्वचालित रूप से एक कस्टम कॉन्फ़िगरेशन अनुभाग के लिए काम नहीं करेगा।

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

आप एक कस्टम विन्यास खंड के लिए एक्सएमएल IntelliSense समर्थन चाहते हैं (या तुम सिर्फ 'स्कीमा नहीं मिला' चेतावनी गायब करना चाहते हैं) पहले के तुरंत बाद < XS के बाद अपने DotNetConfig.xsd फ़ाइल में निम्न पंक्ति जोड़ते हैं: स्कीमा ... > लाइन (जो आमतौर पर DotNetConfig.xsd फ़ाइल में दूसरी पंक्ति है)।

<xs:include schemaLocation="YOUR_DIRECTORY\namespace.assemblyname.xsd"/> 

DotNetConfig.xsd फ़ाइल XML \ स्कीमा उपनिर्देशिका में अपने दृश्य स्टूडियो 8 (या 9) स्थापना निर्देशिका में पाया जा सकता।

+1

+1। जब कस्टम कॉन्फ़िगरेशन अनुभागों की बात आती है तो स्कीमा को अक्सर अनदेखा किया जाता है। वे अविश्वसनीय रूप से उपयोगी होते हैं जब आप व्यवस्थापक या सह-लो को अपने app.config या web.config में परिवर्तन करना पड़ता है। –

+2

मुझे एक बेहतर समाधान मिला है। शायद वीएस 2010 की आवश्यकता हो सकती है, सुनिश्चित नहीं है :) http://stackoverflow.com/questions/1127315/how-do-i-make-an-extension-xsd-for-the-web-app-config-schema/7977168#7977168 –

+3

वैसे भी "YOUR_DIRECTORY \ namespace.assemblyname.xsd" उत्पन्न करने के लिए है? या क्या मुझे इसे मैन्युअल रूप से लिखना है? – NSjonas

4

यदि आप अपने DotNetConfig.xsd को संशोधित नहीं करना चाहते हैं तो आप xsd कॉन्फ़िगरेशन "इनलाइन" जोड़ सकते हैं।

आपके मामले में कस्टम खंड

<ServiceContainers xmlns="your_xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="your_xmlns location_of_your_schema"> 

     <Registration .... 

</ServiceContainers> 

यह उपयोगी है एक XSD का परीक्षण करते हुए स्थानीय स्तर पर क्योंकि location_of_your_schema एक स्थानीय पथ हो सकता है और के लिए निम्न विशेषताओं को जोड़ने जब आप उत्पादन परिवर्तन location_of_your_schema के लिए तैयार हैं xsd फ़ाइल के सार्वजनिक यूआरएल के लिए।

ध्यान दें कि xsi: schemaLocation विशेषता रिक्त स्थान जहां प्रत्येक जोड़ी में पहली स्ट्रिंग एक namespace यूआरआइ और दूसरी स्ट्रिंग है के द्वारा अलग तार के जोड़े शामिल होना चाहिए एक स्कीमा का स्थान है।

+1

हाय, मुझे पता है कि यह एक साल पहले है। मैंने कोशिश की लेकिन मुझे 'अपरिचित विशेषता' xmlns: xsi 'मिल गया। ध्यान दें कि गुण नाम केस-संवेदी हैं। 'जब मैं अपना ऐप चलाता हूं। मेरा ऐप चलता है यदि मैं आपके द्वारा उल्लिखित गुणों को हटा देता हूं, लेकिन फिर मैं इंटेलिसेंस खो देता हूं। क्या आपको पता चलेगा कि यह रनटाइम त्रुटि का कारण क्यों है? अग्रिम में धन्यवाद –

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