2010-11-11 10 views
33

मैं config का उपयोग कर रहे VS2010 काफ़ी हाल ही में में बदल देती है, लेकिन क्यों कुछ रूपांतरण पैकेज में Web.config करने के लिए सीधे लागू होते हैं के रूप में उलझन में हूँ, लेकिन दूसरों SetParameters.xml में एक टोकन तो प्रकाशित पर लागू के खिलाफ जमा हो जाती है।कुछ Web.config को SetParameters.xml में टोकन किए गए क्यों बदलते हैं और अन्य नहीं हैं?

उदाहरण के लिए, निम्न कनेक्शन स्ट्रिंग और एप्लिकेशन सेटिंग के साथ कोई Web.config ले:

<connectionStrings> 
    <add name="AutoDeployDb" connectionString="Data Source=(local);Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=Passw0rd"/> 
</connectionStrings> 
<appSettings> 
    <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" /> 
</appSettings> 

तो यहाँ इसी config वर्तमान बिल्ड विन्यास के लिए बदलना है:

<connectionStrings> 
    <add xdt:Transform="Replace" xdt:Locator="Match(name)" name="AutoDeployDb" connectionString="Data Source=MyDevServer;Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=s*#@Kdsl" /> 
</connectionStrings> 
<appSettings> 
    <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="ChartImageHandler" value="storage=file;timeout=20;dir=d:\inetpub\AutoDeploy\TempImageFiles\"/> 
</appSettings> 

इन दोनों कर रहे हैं "बदलें" ट्रांसफॉर्म और एक से अधिक "नाम" पर मेल खाने वाली कनेक्शन स्ट्रिंग होने के नाते और दूसरा "कुंजी" से मेल खाने वाली ऐप सेटिंग्स होने पर, मेरी आंखों में वे समान हैं।

अब उसके एवज में पैकेज में SetParameters.xml फ़ाइल के अंदर देखने के लिए और केवल एक कनेक्शन स्ट्रिंग setParameter नोड है। PackagTmp फ़ोल्डर की web.config में, एप्लिकेशन सेटिंग पहले से ही है, जबकि कनेक्शन स्ट्रिंग एक "$ (ReplacableToken_AutoDeployDb-Web.config कनेक्शन STRING_0)" मूल्य जो केवल लागू किया जाता है जब पैकेज तैनात किया जाता है है लागू किया गया है बदलने।

ऐसा क्यों है? क्या यह कनेक्शन तारों के लिए विशिष्ट है (या इसके विपरीत, ऐप सेटिंग्स में)? मैं rationale of this approach की सराहना करता हूं, मैं इस बात पर स्पष्ट नहीं हूं कि यह कुछ सेटिंग्स पर क्यों लागू होता है, न कि दूसरों को।

क्या कोई इस पर कुछ प्रकाश डाल सकता है?

उत्तर

37

यह वास्तव में config रूपांतरण के साथ कोई संबंध नहीं है। मैंने अभी http://sedodream.com/2010/11/11/ASPNETWebApplicationPublishPackageTokenizingParameters.aspx पर एक बहुत ही विस्तृत ब्लॉग पोस्ट किया है। लेकिन यहां कुछ जानकारी आपके लिए है।

वेब प्रकाशन पाइपलाइन (WPP) में हम विशेष कलाकृतियों के रूप में संबंध तार संभाल। हम सभी कनेक्शन तारों के लिए स्वचालित रूप से आपके लिए पैरामीटर बनाएंगे। ऐसा इसलिए है क्योंकि कई मामलों में जब आप अपना ऐप तैनात करते हैं तो आप कनेक्शन स्ट्रिंग को बदलना चाहते हैं। हम स्वचालित रूप से किसी भी ऐपसेटिंग मान के लिए पैरामीटर नहीं बनाते हैं। अब अपने प्रश्न पर वापस हम कनेक्शन तारों को टोकननाइज़ क्यों करते हैं? हम यह सुनिश्चित करने के लिए वास्तव में ऐसा कर रहे हैं कि आप मूल्य निर्धारित करने से चूक नहीं पाते हैं और फिर गलती से गलत एप्लिकेशन को अपडेट करने के लिए आपका आवेदन है। हम आपके लिए उन पैरामीटर बनाकर आपकी मदद करते हैं। यदि आप चाहें तो आप इस व्यवहार को अक्षम भी कर सकते हैं। आप MSBuild प्रॉपर्टी ऑटो पैरामैटिज़ेशन WebConfigConnectionStrings को गलत पर सेट कर सकते हैं।

+3

ऐपसेटिंग (या तो विशिष्ट वाले या पूरे सेट) के इलाज के लिए एक आसान तरीका (एमएसबिल्ड संपत्ति के माध्यम से) होने पर यह अविश्वसनीय रूप से उपयोगी होगा। जैसे AutoParameterizationAppSettings = सत्य। –

+5

यह आलेख मेरी समस्या को हल करने के तरीके को परिभाषित करने में काफी अच्छा है: http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html –

+1

लेकिन कोई भी यह क्यों चाहेंगे? –

1

तैनाती के बारे में, उन दोनों के बीच एक महत्वपूर्ण अंतर है। जब आप आईआईएस में वेब पैकेज आयात करते हैं:

  • कनेक्शन स्ट्रिंग्स को स्वचालित पैरामीटर के लिए विज़ार्ड संवाद में स्वचालित रूप से शामिल किया जाएगा।
  • ऐप सेटिंग्स डिफ़ॉल्ट रूप से वहां नहीं होगी। तुम सच में ऐसा करना चाहते हैं, तो चरण में का पालन करें "कस्टम Parameterization - web.config फ़ाइल में अनुप्रयोग सेटिंग्स" Configuring Parameters for Web Package Deployment

की धारा भेदभाव देव और ऑप्स जो जिम्मेदारी सीमा बनाता है। एक ओर, आप कनेक्शन स्ट्रिंग्स में लक्षित वातावरण (डेटाबेस, कैश, एडब्ल्यूएस कुंजी/गुप्त इत्यादि) के पैरामीटर डालते हैं जिन्हें ऑप्स की देखभाल करने की आवश्यकता होती है। दूसरी ओर, आप ऐप सेटिंग्स अनुभाग में अप्रासंगिक विकल्प डालते हैं ताकि विशिष्ट उत्पादों और व्यापार तर्कों पर ओप का बोझ राहत प्राप्त हो सके।

मेरी कंपनी में, एक ऑप्स लड़का अक्सर कई उत्पादों के लिए ज़िम्मेदार होता है। आप वास्तव में उन्हें उतना ही उत्पाद ज्ञान जानने की आवश्यकता नहीं कर सकते जितना आप करते हैं। ध्यान देने के लिए उन्हें कम चीज़ की आवश्यकता होगी, जीवन जितना खुश होगा।

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

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