पूरी सहायताके लिए शुक्रिया। हमने जो अंतिम समाधान लागू किया वह हर उत्तर से थोड़ा सा लिया।
हमें सरल बैच फ़ाइलों का उपयोग करके कई वातावरण के साथ काम करना आसान लगता है। मैं यह सुझाव नहीं दे रहा हूं कि ऐसा करने का यह सबसे अच्छा तरीका है, लेकिन हमारे दिए गए परिदृश्य और आवश्यकताओं के लिए, यह अच्छी तरह से काम करता है। अपने प्रोजेक्ट नाम और "पर्यावरण" के साथ पूरक "परियोजना" अपने पर्यावरण के नाम (देव, परीक्षण, चरण, उत्पादन, जो कुछ भी) के साथ।
यहां हमारे "ccnet.config" फ़ाइल का कार्य क्षेत्र है।
<!-- override settings -->
F:\Source\Project\Environment\CruiseControl\CopySettings.bat
<!-- compile -->
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe
F:\Source\Project\Environment\
Project.sln
/noconsolelogger /p:Configuration=Debug /v:diag
Rebuild
0
ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll
<!-- clickonce publish -->
F:\Source\Project\Environment\CruiseControl\Publish.bat
पहली बात यह है कि आप नोटिस करेंगे कि CopySettings.bat चलाता है। यह पर्यावरण कनेक्शन के लिए विशिष्ट सेटिंग्स की प्रतिलिपि बनाता है, जैसे डेटाबेस कनेक्शन।
अगला, मानक MSBUILD कार्य चलता है। किसी भी संकलन त्रुटियों को यहां पकड़ा जाता है और सामान्य के रूप में संभाला जाता है।
निष्पादित करने की आखिरी चीज़ Publish.bat है। यह वास्तव में कमांड लाइन से एमएसबीयूआईएलडी "पुनर्निर्माण" करता है, और क्रूज़ कंट्रोल के पैरामीटर स्वचालित रूप से पारित और निर्मित होते हैं। इसके बाद, एमएसबीयूआईएलडी को "प्रकाशित" लक्ष्य के लिए बुलाया जाता है। प्रकाशन के लिए सटीक समान पैरामीटर दिए जाते हैं क्योंकि पुनर्निर्माण जारी किया गया था। यह निर्माण संख्या को सिंक में रखता है। इसके अलावा, हमारे निष्पादन योग्य नाम अलग-अलग हैं (यानी - प्रोजेक्टडेव और प्रोजेक्टटेस्ट)। हम अलग-अलग संस्करण संख्याओं और नामों के साथ समाप्त होते हैं, और यह क्लिकऑन को अपनी चीज़ करने की अनुमति देता है।
Publish.bat का अंतिम भाग वास्तविक फ़ाइलों को उनके नए घरों में कॉपी करता है। हम publ.htm का उपयोग नहीं करते हैं क्योंकि हमारे सभी उपयोगकर्ता नेटवर्क पर हैं, हम उन्हें अपने डेस्कटॉप पर मैनिफेस्ट फ़ाइल के लिए शॉर्टकट देते हैं और वे उस संस्करण संख्या के साथ सही निष्पादन योग्य पर क्लिक करके हमेशा चल रहे हैं क्रूज नियंत्रण।
यहां CopySettings.bat है
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
और आखिरकार, यहां प्रकाशित है। बिट
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
जैसे मैंने कहा, संभवतः ऐसा नहीं किया गया है कि क्रूज़ कंट्रोल और एमएसबीयूआईएलडी डेवलपर्स ने चीजों को काम करने का इरादा किया था, लेकिन यह काम करता है। अगर आपको कल यह काम करने की ज़रूरत है, तो यह वह समाधान हो सकता है जिसे आप ढूंढ रहे हैं। सौभाग्य!