5

मैं एक परियोजना में कॉन्फ़िगरेशन फ़ाइलों के समूह को बदलने के लिए XML के लिए SlowCheetah का उपयोग कर रहा हूं।एकाधिक बिल्ड कॉन्फ़िगरेशन एक कॉन्फ़िगरेशन रूपांतरण साझा कर सकते हैं?

हालांकि, यह वही समाधान लोड संतुलित सेटअप का हिस्सा है, जहां कुछ कॉन्फ़िगरेशन मान विभिन्न सर्वरों (दो, इस मामले में) के बीच भिन्न होते हैं।

मैं निम्नलिखित है कॉन्फ़िगरेशन

  • डीबग
  • रिलीज
  • Release.Test
  • Release.Prod1
  • Release.Prod2

लगभग रिलीज में सब कुछ का निर्माण। प्रोड 1 और रिलीज। प्रोड 2 समान है, कुछ मूल्यों को छोड़कर मैं कॉन्फ़िगरेशन फ़ाइलों में से एक। क्या कोई तरीका है कि मेरे पास दो समान फ़ाइलों (Something.Release.Prod1.Config और Something.Release.Prod2.Config) की बजाय इन दोनों बिल्ड कॉन्फ़िगरेशन पर उपयोग किए जाने के लिए Something.Release.Prod.Config जैसी फ़ाइल हो सकती है?

... और विस्तृत करने के लिए: इस मामले में मैं दो वातावरण पर तैनात कर रहा हूं, इसलिए एक डुप्लिकेट फ़ाइल वास्तव में एक बड़ा संकट नहीं है। क्या होगा यदि आपके पास दस या सौ सर्वर हैं? मुझे कोई कारण नहीं दिखता कि एक सीआई-सर्वर (विशेष रूप से इस मामले में टीमसिटी) के साथ एक सेटअप ऐसा करने में सक्षम नहीं होना चाहिए, भले ही मुझे लगता है कि इस तरह के वातावरण में अधिक अनुकूलित सेटअप सामान्य हैं।

यह आमतौर पर कैसे संभाला जाता है?

मुझे लगता है कि वास्तविक परिवर्तन होने से पहले एक बिल्ड चरण के रूप में मैं फ़ाइलों की कुछ जादू प्रतिलिपि कर सकता हूं, लेकिन यह एक गन्दा और अत्यधिक जटिल समाधान जैसा लगता है।

+0

कुछ जिसे हम यहां भी समझने की कोशिश कर रहे हैं ... टी 4 टेम्पलेट्स को म्यूट किया जा रहा है लेकिन मुझे विशेष रूप से उन्हें पसंद नहीं है। मैं कॉन्फ़िगरेशन रूपांतरण पसंद करता हूं लेकिन इसे डीबग और रिलीज़ संस्करणों से परे विस्तारित करना चाहता हूं .. जैसे कि आप –

+1

को समझने की कोशिश कर रहे हैं, डीबग और रिलीज से परे विस्तार करना आसान है, यह बिल्ड => बिल्ड कॉन्फ़िगरेशन मेनू से अधिक बिल्ड कॉन्फ़िगरेशन जोड़ने के बारे में है । उनमें से कुछ को एक फ़ाइल साझा करना, हालांकि ... –

उत्तर

1

कॉन्फ़िगरेशन रूपांतरणों को TransformsFiles.targets फ़ाइल में $ (कॉन्फ़िगरेशन) चर द्वारा नियंत्रित किया जाता है।

<TransformXml Source="@(_FilesToTransformNotAppConfig->'%(FullPath)')" 
        Transform="%(RelativeDir)%(Filename).$(Configuration)%(Extension)" 
        Destination="@(_FilesToTransformNotAppConfig->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')" 
        Condition=" Exists('%(RelativeDir)%(Filename).$(Configuration)%(Extension)') " /> 

यहां, आप $ (कॉन्फ़िगरेशन) को "पर्यावरण" जैसे किसी भी अन्य मूल्य के रूप में बदल सकते हैं। तो बस अपने MSBuild आर्ग में "पर्यावरण" चर सेट -

/p:Environment=Prod 

यह आपको अपने निर्माण सेटिंग रखने और स्वतंत्र रूप से अपने रूपांतरण करने के लिए अनुमति चाहिए।

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