2015-09-14 10 views
10

में घोषित स्विच सेट नहीं कर रहा है, मैं एक app.config (या web.config) फ़ाइल में किसी प्रविष्टि से "स्विच.System.Xml.IgnoreEmptyKeySequences" संगतता स्विच सेट करने का प्रयास कर रहा हूं, लेकिन ओवरराइड प्रकट होता है अनदेखा किया जाना है। किसी भी अजीब विन्यास की संभावना को दूर करने के लिए मेरी मौजूदा परियोजना मैंने वीएस2015 में एक नया नया नेट नेट वेब प्रोजेक्ट प्रोजेक्ट (और संबंधित टेस्ट प्रोजेक्ट) बनाया है।.Net 4.6 AppContextSwitchOverrides कॉन्फ़िगरेशन

मैं AppContext के लिए माइक्रोसॉफ्ट मार्गदर्शन अनुसरण कर रही हूं स्विच https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx और https://msdn.microsoft.com/en-us/library/mt270286(v=vs.110).aspx

app.config फ़ाइल इस प्रकार है:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <AppContextSwitchOverrides value="Switch.System.Xml.IgnoreEmptyKeySequences=true"/> 
    </runtime> 
</configuration> 

कोड मैं मूल्य को पढ़ने के लिए उपयोग कर रहा हूँ है:

 bool valueWasFound; 
     bool valueFromContext; 

     string switchString = "Switch.System.Xml.IgnoreEmptyKeySequences"; 

     valueWasFound = AppContext.TryGetSwitch(switchString, out valueFromContext); 

और फिर भी मैं लगातार false दोनों के लिए प्राप्त करता हूं valueWasFound और valueFromContext

मैं एक ही परिणाम के साथ अन्य स्विच मूल्यों के साथ इस प्रयास किया है।

मुझे लगता है कि अगर मैं

AppContext.SetSwitch("Switch.System.Xml.IgnoreEmptyKeySequences", true); 

तो स्विच के रूप में प्रत्याशित सेट किया गया है का उपयोग कर कोड में स्विच सेट (अर्थात मैं valueWasFound और valueFromContext दोनों के लिए true मिल) लगता है।

लेकिन मैं बहुत ज्यादा app.config/web.config

कोई भी विचार में कैसे मैं इस काम करने के लिए बहुत सराहना की जाएगी पाने पर इस सेट करने के लिए पसंद करेंगे।

+0

मैं वही व्यवहार देख रहा हूं, लेकिन _Switch.System.IdentityModel.DisableMultipleDNSEntriesInSancertificate_ स्विच के साथ। इसे Web.config (IIS एप्लिकेशन) में सेट करना अनदेखा कर दिया गया है और 'TryGetSwitch' आपके जैसा ही परिणाम उत्पन्न करता है, कोड में इसे सेट करने के लिए काम करता है। – arfbtwn

उत्तर

0

आप अपने समाधान एक्सप्लोरर में App.config को संशोधित किया जाना चाहिए। यह फ़ाइल का नाम बदलकर YourAppName.exe.config कर दिया जाएगा और आपके बाइनरी फ़ोल्डर में होना चाहिए। उस फ़ाइल को हटाने या नाम बदलने से इस स्विच को कोई प्रभाव नहीं पड़ेगा। (आप मैन्युअल रूप में अच्छी तरह के निर्माण के बाद उस फ़ाइल जोड़ सकते हैं)

मेरा मानना ​​है कि आप होगा मैन्युअल रूप से अपने exe के बगल में App.config डाल जो अनुचित नाम होगा।

0

मैंने नेट फ्रेमवर्क 4.6.2 <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true"/> अजीब बात यह थी कि सामान्य रूप से चलने पर व्यवहार बदल गया लेकिन जब हम यूटीसी चलाने की कोशिश करते हैं तो असफल हो जाता है।

0

वैकल्पिक रजिस्ट्री करने के लिए स्विच जोड़ना है। ऐसा लगता है कि यह काम करता है।

MSDN प्रलेखीकरण:

एक स्ट्रिंग मान जिसका नाम रजिस्ट्री में HKLM \ SOFTWARE \ Microsoft.NETFramework \ AppContext कुंजी करने के लिए स्विच का नाम है जोड़ कर। इसका मूल्य एक बूलियन का स्ट्रिंग प्रस्तुति होना चाहिए जिसे बूलियन द्वारा पार्स किया जा सकता है। पर्स विधि; यानी, यह "सत्य", "सत्य", "झूठा", या "झूठा" होना चाहिए। यदि रनटाइम किसी अन्य मूल्य से मुकाबला करता है, तो यह स्विच को अनदेखा करता है।

मेरे मामले में मैं इस

मान का नाम किया: Switch.System.IdentityModel।DisableMultipleDNSEntriesInSANCertificate

मान डेटा: सच

enter image description here

नकारात्मक पक्ष यह है कि यह मशीन पर सभी ऐप्स पर लागू है। मेरी पुस्तक रजिस्ट्री सेटिंग्स में कोड में हार्डकोड की तुलना में भी कम पसंद किया जाता है, इसलिए मैं प्रोग्रामेटिकल दृष्टिकोण से चिपके रहूंगा।

यह चाल अभी भी साफ है, हालांकि बस कुछ जल्दी करने की कोशिश करें।

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