मैं 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 की सराहना करता हूं, मैं इस बात पर स्पष्ट नहीं हूं कि यह कुछ सेटिंग्स पर क्यों लागू होता है, न कि दूसरों को।
क्या कोई इस पर कुछ प्रकाश डाल सकता है?
ऐपसेटिंग (या तो विशिष्ट वाले या पूरे सेट) के इलाज के लिए एक आसान तरीका (एमएसबिल्ड संपत्ति के माध्यम से) होने पर यह अविश्वसनीय रूप से उपयोगी होगा। जैसे AutoParameterizationAppSettings = सत्य। –
यह आलेख मेरी समस्या को हल करने के तरीके को परिभाषित करने में काफी अच्छा है: http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html –
लेकिन कोई भी यह क्यों चाहेंगे? –