Web.config परिवर्तन के साथ appSettings अनुभाग में विशेषता के मूल्य को कैसे बदलें


260

क्या निम्नलिखित Web.config appSettings फ़ाइल को बदलना संभव है:

<appSettings>
    <add key="developmentModeUserId" value="00297022" />
    <add key="developmentMode" value="true" />
    /* other settings here that should stay */
</appSettings>

कुछ इस तरह से:

<appSettings>
    <add key="developmentMode" value="false" />
    /* other settings here that should stay */
</appSettings>

इसलिए, मुझे प्रमुख विकास को हटाने की आवश्यकता हैमॉडयूज़रआईड , और मुझे मुख्य विकास के लिए मान को बदलने की आवश्यकता है ।

जवाबों:


452

आप कुछ इस तरह चाहते हैं:

<appSettings>
  <add key="developmentModeUserId" xdt:Transform="Remove" xdt:Locator="Match(key)"/>
  <add key="developmentMode" value="false" xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"/>
</appSettings>

इसे भी देखें: वेब अनुप्रयोग परियोजना परिनियोजन के लिए Web.config रूपांतरण सिंटैक्स


24
ध्यान दें कि चाबियाँ केस-संवेदी हैं!
कोस्मिन

2
बहुत बढ़िया जवाब। मैं स्लो चीता की तरह 3 पार्टी ऑप्शन्स ट्राई कर रहा था और कहीं नहीं मिल रहा था - यह सरल और परफेक्ट था।
स्टीव

2
@stevens: यदि आप देशी एप्लिकेशन के लिए एप्लिकेशन को परिवर्तित करना चाहते हैं, तो आप धीमी चीता की आवश्यकता होगी। हालाँकि, वाक्यविन्यास समरूप होना चाहिए यदि मुझे याद है (यह थोड़ी देर के लिए है क्योंकि मुझे स्लो चीता का उपयोग करना था)।
एल्सडिल

धीमे धोखेबाज़ के लिए एक विकल्प myotherconfig.staging.config और web.Staging.config में परिवर्तन करना है, myotherconfig.config के संदर्भ को web.config में
वापस लाना

3
बस एक मामूली स्पष्टीकरण जो कुछ लोगों की मदद कर सकता है: xdt:Transform="SetAttributes" xdt:Locator="Match(key)"भाग का उपयोग Web.hatever.config में किया जाना चाहिए और Web.config फ़ाइल में नहीं।
user3533716

11

सभी AppSettings की जगह

यह ओवरकिल मामला है जहां आप सिर्फ web.config के एक पूरे अनुभाग को बदलना चाहते हैं। इस स्थिति में मैं सभी AppSettings को web.config में बदल दूंगा। web.release.config में नई सेटिंग्स आएंगी। यह मेरी आधार रेखा web.config appSettings है:

<appSettings>
  <add key="KeyA" value="ValA"/>
  <add key="KeyB" value="ValB"/>
</appSettings>

अब मेरी web.release.config फ़ाइल में, मैं एक appSettings अनुभाग बनाने जा रहा हूं, इसके अलावा मैं विशेषता xdt: Transform = "प्रतिस्थापित" शामिल करूंगा क्योंकि मैं संपूर्ण तत्व को बदलना चाहता हूं। मुझे xdt का उपयोग नहीं करना पड़ा: लोकेटर क्योंकि पता लगाने के लिए कुछ भी नहीं है - मैं सिर्फ स्लेट को साफ करना चाहता हूं और सब कुछ बदलना चाहता हूं।

<appSettings xdt:Transform="Replace">
  <add key="ProdKeyA" value="ProdValA"/>
  <add key="ProdKeyB" value="ProdValB"/>
  <add key="ProdKeyC" value="ProdValC"/>
</appSettings>

ध्यान दें कि web.release.config फ़ाइल में मेरे appSettings अनुभाग में दो के बजाय तीन कुंजियाँ हैं, और कुंजियाँ समान नहीं हैं। अब हम उत्पन्न web.config फ़ाइल को देखते हैं जब हम प्रकाशित करते हैं तो क्या होता है:

<appSettings>
   <add key="ProdKeyA" value="ProdValA"/>
   <add key="ProdKeyB" value="ProdValB"/>
   <add key="ProdKeyC" value="ProdValC"/>
 </appSettings>

जैसा कि हमने उम्मीद की थी - web.config appSettings को पूरी तरह से web.release config में मानों द्वारा बदल दिया गया था। वह तो आसान था!


9

यदि आप अपनी एप्लिकेशन सेटिंग को वेब कॉन्फ़िगरेशन फ़ाइल से web.Release.config में बदलना चाहते हैं, तो आपको निम्न चरण करने होंगे। अपने web.config एप्लिकेशन सेटिंग फ़ाइल को यह बताएं-

<appSettings>
     <add key ="K1" value="Debendra Dash"/>
  </appSettings>

अब यहाँ परिवर्तन के लिए web.Release.config है।

<appSettings>
    <add key="K1" value="value dynamicly from Realease"
       xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"   
         />
  </appSettings>

यह K1 के मूल्य को नए मोड में नए मान में बदल देगा।


1

मुझे जरूरत से ज्यादा जानकारी के लिए ट्रांसफॉर्मेशन पसंद नहीं है। इसलिए मैं चाबियों को बहाल करने के बजाय बस शर्त और इरादे बताता हूं । इस तरह से किए गए इरादे को देखना बहुत आसान है, कम से कम आईएमओ। इसके अलावा, मैं xdtपाठक को इंगित करने के लिए पहले सभी विशेषताओं को आज़माता हूं , ये परिवर्तन हैं और नई चीजों को परिभाषित नहीं किया जा रहा है।

<appSettings>
  <add xdt:Locator="Condition(@key='developmentModeUserId')" xdt:Transform="Remove" />
  <add xdt:Locator="Condition(@key='developmentMode')" xdt:Transform="SetAttributes"
       value="false"/>
</appSettings>

ऊपर में यह देखना बहुत आसान है कि पहला तत्व हटा रहा है। दूसरा गुण सेट कर रहा है। यह आपके द्वारा परिभाषित किसी भी विशेषता को यहां स्थापित / प्रतिस्थापित करेगा। इस मामले में यह बस के लिए निर्धारित valueकिया जाएगा false

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.