2009-07-31 9 views
5

से एकाधिक एमएसबील्ड स्क्रिप्ट्स को कैसे कॉल करते हैं, मेरे पास दो वेब सेवाओं को तैनात करने के लिए यूआई 1 को तैनात करने के लिए तैनाती के लिए 3 MSBUild स्क्रिप्ट हैं, 1। बैकएंड सेवाओं को तैनात करने के लिए 1।आप एक एमएसबील्ड स्क्रिप्ट

अब मैं एक क्लिक परिनियोजन एमएसबिल्ड स्क्रिप्ट बनाना चाहता हूं, जो उपर्युक्त 3 स्क्रिप्ट्स को कॉल करेगा, जिसे टीमसिटी सर्वर से निष्पादित किया जा सकता है।

तो मैं इन तीन एमएसबिल्ड स्क्रिप्ट को एक अलग MSBuild स्क्रिप्ट से कैसे कॉल कर सकता हूं।

उत्तर

7
+1

एक कोड स्निपेट अद्भुत होगा। – Pat

+0

मेरे द्वारा लिंक किए गए पृष्ठ पर बहुत से कोड स्निपेट हैं, इस पोस्ट में फिट होने से अधिक;) – OregonGhost

0

मैंने टीमसिटी सर्वर का उपयोग नहीं किया है, लेकिन एक संभव वैकल्पिक समाधान तीन निर्माण स्क्रिप्ट को एक स्क्रिप्ट में जोड़ना है। और मास्टर बिल्ड फ़ाइल में अलग-अलग लक्ष्यों में तीन अलग-अलग स्क्रिप्ट का कार्य रखें। तो, तीन अलग-अलग बिल्ड स्क्रिप्ट के बजाय, आपके पास तीन लक्ष्य, अर्थात् तैनातीयूआई, तैनाती सेवा, तैनाती बैकएंड के साथ एक निर्माण स्क्रिप्ट है। Untested नमूना नीचे:

<?xml version="1.0" encoding="utf-8" ?> 
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5"> 

    <Target Name="DefaultTarget"> 
      <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget> 
      <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget> 
      <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target> 

    <Target Name="deployUI"> 
      <!-- Put UI deployment tasks here --> 
    </Target> 

    <Target Name="deployServices"> 
      <!-- Put Services deployment tasks here --> 
    </Target> 

    <Target Name="deployBackend"> 
      <!-- Put Backend deployment tasks here --> 
    </Target> 
</Project> 
+0

यह सभी 3 घटकों को मर्ज करने का एक वैध विकल्प है, लेकिन यदि मैं चुनता हूं तो मैं स्वतंत्र रूप से घटकों को तैनात करने की क्षमता चाहता हूं , दो स्क्रिप्ट में बिल्ड स्क्रिप्ट सामग्री को डुप्लिकेट नहीं करना चाहता। – Pradeep

+0

आपके पास बिल्ड फ़ाइल के भीतर सशर्त बयान का उपयोग करके अलग-अलग घटकों को तैनात करने की क्षमता है। यदि आप सशर्त बयान का उपयोग करते हैं, तो आपको डुप्लिकेट स्क्रिप्ट फ़ाइलों को या तो बनाए रखने की आवश्यकता नहीं है। बिल्ड फ़ाइल को कॉल करते समय बस सही लक्ष्य प्रदान करें और आप कर चुके हैं। – desigeek

+0

Sidenote: मुझे यकीन नहीं है कि स्वीकृत उत्तर कैसे मदद करता है? उल्लिखित कार्य में मुझे बिल्ड फाइल/स्क्रिप्ट्स को कॉल करने का कोई तरीका नहीं दिखता है, जो आपके प्रश्न पूछता है। एमएसबिल्ड कार्य आपको कुछ विकल्पों के साथ परियोजनाओं का निर्माण करने की अनुमति देता है, लेकिन आप बिल्ड फाइलों का उपयोग करना चाहते हैं जो अधिकतर संकलित और तैनाती की तुलना में अन्य चीजें करेंगे (उदाहरण के लिए संबंधित कॉन्फ़िगरेशन फाइल अपडेट करना)। उस मामले में केवल एमएसबिल्ड कार्य का उपयोग नहीं करेगा। मुझे बताएं कि मुझे कुछ याद आ रहा है या नहीं। – desigeek

0

MSBuild 4.0 में एक विकल्प conditionally import हो सकता है आपके एक क्लिक तैनाती MSBuild लिपि में 3 प्रोजेक्ट फ़ाइलें:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" /> 
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" /> 
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" /> 

<Target Name="DeployTheWorld"> 
    <Message Text="Deploying..." /> 
</Target> 

तब लक्ष्य आप चलाना चाहते हैं पर AfterTargets feature का उपयोग अपने अलग परियोजना फाइलों में आप आयात किया है कि:

<Target Name="DeployUI" AfterTargets="DeployTheWorld"> 
    <Message Text="Hello from DefaultAfterTarget"/> 
    </Target> 

यह TeamCi के भीतर से तैनाती को अनुकूलित में लचीलेपन आप दे देंगे Ty।

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