सभी मदद के लिए धन्यवाद:
यहाँ अपने निर्माण स्क्रिप्ट देखा की तरह है। हमने जो अंतिम समाधान लागू किया वह हर उत्तर से थोड़ा सा लिया।
हमें सरल बैच फ़ाइलों का उपयोग करके कई वातावरण के साथ काम करना आसान लगता है। मैं यह सुझाव नहीं दे रहा हूं कि ऐसा करने का यह सबसे अच्छा तरीका है, लेकिन हमारे दिए गए परिदृश्य और आवश्यकताओं के लिए, यह अच्छी तरह से काम करता है। अपने प्रोजेक्ट नाम और "पर्यावरण" के साथ पूरक "परियोजना" अपने पर्यावरण के नाम (देव, परीक्षण, चरण, उत्पादन, जो कुछ भी) के साथ।
यहां हमारे "ccnet.config" फ़ाइल का कार्य क्षेत्र है।
<!-- override settings -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\CopySettings.bat</executable>
</exec>
<!-- compile -->
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>F:\Source\Project\Environment\</workingDirectory>
<projectFile>Project.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Rebuild</targets>
<timeout>0</timeout>
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<!-- clickonce publish -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\Publish.bat</executable>
</exec>
पहली बात तो आप देखेंगे कि CopySettings.bat चलाता है। यह पर्यावरण कनेक्शन के लिए विशिष्ट सेटिंग्स की प्रतिलिपि बनाता है, जैसे डेटाबेस कनेक्शन।
अगला, मानक MSBUILD कार्य चलता है। किसी भी संकलन त्रुटियों को यहां पकड़ा जाता है और सामान्य के रूप में संभाला जाता है।
निष्पादित करने की आखिरी चीज़ Publish.bat है। यह वास्तव में कमांड लाइन से एमएसबीयूआईएलडी "पुनर्निर्माण" करता है, और क्रूज़ कंट्रोल के पैरामीटर स्वचालित रूप से पारित और निर्मित होते हैं। इसके बाद, एमएसबीयूआईएलडी को "प्रकाशित" लक्ष्य के लिए बुलाया जाता है। प्रकाशन के लिए सटीक समान पैरामीटर दिए जाते हैं क्योंकि पुनर्निर्माण जारी किया गया था। यह निर्माण संख्या को सिंक में रखता है। इसके अलावा, हमारे निष्पादन योग्य नाम अलग-अलग हैं (यानी - प्रोजेक्टडेव और प्रोजेक्टटेस्ट)। हम अलग-अलग संस्करण संख्याओं और नामों के साथ समाप्त होते हैं, और यह क्लिकऑन को अपनी चीज़ करने की अनुमति देता है।
Publish.bat का अंतिम भाग वास्तविक फ़ाइलों को उनके नए घरों में प्रतिलिपि बनाता है। हम publ.htm का उपयोग नहीं करते हैं क्योंकि हमारे सभी उपयोगकर्ता नेटवर्क पर हैं, हम उन्हें अपने डेस्कटॉप पर मैनिफेस्ट फ़ाइल के लिए शॉर्टकट देते हैं और वे उस संस्करण संख्या के साथ सही निष्पादन योग्य पर क्लिक करके हमेशा चल रहे हैं क्रूज नियंत्रण।
यहाँ
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\app.config" "F:\Source\Project\Environment\Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.Designer.vb" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.settings" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
CopySettings.bat है और अंत में, यहाँ, Publish.bat
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:rebuild "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationRevision=%CCNetLabel% /property:AssemblyName="ProjectEnvironment" /property:PublishUrl="\\Server\bin\Project\Environment\\"
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:publish "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationVersion="1.0.0.%CCNetLabel%" /property:AssemblyVersion="1.0.0.%CCNetLabel%" /property:AssemblyName="ProjectEnvironment"
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish" "F:\Binary\Project\Environment" /Y /I
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish\Application Files" "F:\Binary\Project\Environment\Application Files" /Y /I /S
जैसा कि मैंने कहा है यह शायद रास्ता है कि CruiseControl और MSBuild डेवलपर्स के लिए चीजों को चाहते थे, नहीं किया है काम, लेकिन यह काम करता है। अगर आपको कल यह काम करने की ज़रूरत है, तो यह वह समाधान हो सकता है जिसे आप ढूंढ रहे हैं। सौभाग्य!
मैं बस यह इंगित करना चाहता हूं कि यह थोड़ा पुराना है। यह मानते हुए कि आपकी पोस्ट सही थी, एमएसबील्ड को यूएनसी शेयरों को तैनात करने के लिए अद्यतन किया गया है, जो अब मैं कई सक्रिय परियोजनाओं में करता हूं। –
धन्यवाद, जेम्स। हाँ, यह मूल रूप से 2008 में उत्तर दिया गया था, जब यह सब ताजा और सेक्सी था; यह 7 साल बाद प्रासंगिक नहीं हो सकता है। –