2010-02-22 6 views
21

मैं एक सतत यूनिट परीक्षण चलने वाली प्रणाली को लागू करने के लिए देख रहा हूं, जिसे मैंने "smoketest" या "tinderbox" कहा है, (एक बिल्ड सर्वर जो स्वच्छ संस्करण नियंत्रण चेक-आउट करता है और पूर्ण सिस्टम किसी भी स्रोत में सबकुछ बनाता है भंडार या परियोजना), और डेल्फी के साथ छोटी टीमों के लिए "निरंतर एकीकरण" जैसी कुछ।डेल्फी बिल्ड एमएस बिल्ड का उपयोग कर स्वचालन और निरंतर एकीकरण व्यवहार्य है?

मैं एक वाणिज्यिक "बिल्ड सर्वर" उत्पाद को प्रतिबद्ध करने के लिए नाराज हूं और उम्मीद कर रहा हूं कि मैं डेल्फी में निर्मित एमएस-बिल्ड समर्थन के साथ बहुत कुछ कर सकता हूं।

मैं संसाधनों, विचारों और शुरू करने के लिए एक जगह की तलाश में हूं। मुझे नहीं पता कि इस उद्देश्य के लिए एमएस बिल्ड का उपयोग कैसे करें। Steve Trevethen में एक ब्लॉग पोस्ट है जो पुरानी डीसीसी 32 कमांड लाइन बिल्ड पर थोड़ी सी चर्चा करता है, और कुछ टिप्पणियां एमएस-बिल्ड का उल्लेख करती हैं जो डेल्फी 2007 से यहां आई है। मैं डेल्फी 2010 का उपयोग कर रहा हूं। मैं मार्गदर्शन और अंतर्दृष्टि और अनुभवों की तलाश में हूं , जो मुझे बताएगा, क्या यह नीचे जाने का एक उचित मार्ग है, और यदि नहीं, तो मुझे इसके बजाय किस तरह जाना चाहिए?

मैंने पाया कि आप एमएसबिल्ड कमांड लाइन से/p: DCU_DcuOutput = के साथ यूनिट (डीसीयू) और EXE आउटपुट निर्देशिका को ओवरराइड कर सकते हैं। ध्यान दें कि मैंने सामान को ओवरराइड करने के तरीके को जानने के लिए मेरी डीपीआरजे फाइलों के अंदर एक्सएमएल को देखा। पुनर्निर्माण काम नहीं करता है (संपादित करें:।। हाँ यह करता यह DPROJ फाइलों पर ठीक काम करता है, लेकिन GroupProjects पर नहीं)

काश

हालांकि, यह केवल एक मेकअप, नहीं निर्माण, और/टी करता है वहाँ कहीं भी एमएसबिल्ड-साथ-डेल्फी दस्तावेज था? "रेड स्टूडियो 2010" में एमएस-बिल्ड सहायता उत्पाद प्रलेखन एमएस-बिल्ड के बारे में एक या दो चीजें दिखाता है लेकिन वास्तव में स्केची और अपूर्ण है।

संबंधित प्रश्न:

MSBuild command lines

+0

ऑफटॉपिक, लेकिन हम इस तरह की चीजों के लिए सिग्विन मेकफ़ाइल और डीसीसी 32 का उपयोग करते हैं। इसका कारण है कि हमारी अधिकांश परियोजनाओं में डेल्फी 5 और इससे पहले की दुनिया में जड़ें हैं, इसलिए हम जो कुछ भी जानते हैं उसके साथ हम चिपके रहते हैं ... लेकिन यह ठीक काम करता है और मुफ़्त है। –

+0

'/ t: rebuild' मेरे लिए एक पूर्ण निर्माण करता है, डेल्फी 200 9 के साथ dproj फ़ाइलों पर, क्या आपने समूहप्रोज़ के बजाय dproj पर msbuild चलाने का प्रयास किया है? http://stackoverflow.com/questions/1773546/how-can-i-get-msbuild-to-do-a-full-build-of-a-delphi-project-equivalent-to-dcc32/1774169#1774169 – jasonpenny

+0

मिंगव के टूल्स का प्रयास करें, यह आपको साइगविन/एमएसआईएस की तुलना में बहुत सी परेशानी बचाता है। दुर्भाग्य से mingw बंद हो गया है कोर्यूटिल्स –

उत्तर

15

डेल्फी 2010 MSBuild का उपयोग करता है के रूप में यह मुख्य निर्माण इंजन है। इसका मतलब है कि आईडीई और कमांड लाइन दोनों एक ही चीज़ करते हैं। इसका मतलब यह भी है कि आप आसानी से कमांड लाइन के साथ मौजूदा परियोजनाओं का निर्माण कर सकते हैं। वास्तव में, हम डेल्फी टीम पर हर समय यह सही चीज करते हैं। आपको कंपाइलर के लिए स्विच के बारे में चिंता करने की ज़रूरत नहीं है - आईडीई द्वारा बनाई गई डीपीआरजे फ़ाइल

स्टार्ट मेनू पर मौजूदा डेल्फी प्रोजेक्ट के साथ एमएसबिल्ड का उपयोग करने के लिए एक कमांड लाइन है। यह सही ढंग से वातावरण सेट करता है ताकि आप बस फोन कर सकते हैं:

MSBuild myproject.dproj

तुम भी कमांड लाइन से विशिष्ट निर्माण विन्यास कॉल कर सकते हैं, आसानी से बनाने के लिए आईडीई का उपयोग कर कहा के लिए आदेश पंक्ति पैरामीटर का उपयोग कर विन्यास MSBuild।

यदि आप पर्यावरण को स्वयं बनाना चाहते हैं, तो आप चीजों को सेट करने के लिए rsvars.bat बैच फ़ाइल चला सकते हैं। वह फ़ाइल आपकी \ bin निर्देशिका में पाई जा सकती है, और डिफ़ॉल्ट कमांड लाइन से उपलब्ध होना चाहिए। ,

@SET BDS=<your BDS directory> 
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0 
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727 
@SET FrameworkVersion=v2.0.50727 
@SET FrameworkSDKDir= 
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH% 
@SET LANGDIR=EN 

इस प्रकार आप अपने खुद के सतत एकीकरण निर्माण बनाना चाहते हैं, तो आप आसानी MSBuild का उपयोग कर अपने डेल्फी निर्माण का प्रबंधन कर सकते हैं:

फ़ाइल निम्न शामिल हैं।

+1

अभी तक इतना अच्छा है, लेकिन कहीं कहीं यह दस्तावेज है कि एक पुनर्मूल्यांकन के बजाय निर्माण करने के लिए, मुझे/t: पुनर्निर्माण का उपयोग करना चाहिए। किसी भी विचार को ध्वज निर्भरता-जांच (उर्फ, मेक) के बजाय निर्माण को मजबूर करना है? –

+0

ऐसा लगता है जैसे/t: पुनर्निर्माण कार्यों, लेकिन केवल .dproj के साथ msbuild को पास किया गया, प्रोजेक्ट समूह नहीं। जो ठीक है मेरे लिए बस थोड़ा और काटने और पेस्टिंग। –

+0

लार्स ने नोट किया है कि/टी: बिल्ड ग्रुपप्रोज के लिए काम करता है जबकि इसकी/टी: .propro फ़ाइलों के लिए पुनर्निर्माण। विलक्षण, लेकिन व्यावहारिक। –

11

dproj और groupproj msbuild फ़ाइलें हैं और आप उनके अंदर एक नज़र डाल सकते हैं। जानकारी के अन्य हिस्सों को msbuild स्थापना पथ (सी: \ विन्डोज़ \ Microsoft.NET \ Framework \ v2.0.50727) में ढूंढना है।वहां आपको कई बोर्लैंड मिलेगा। * लक्ष्य फ़ाइलें।

एमएसबिल्ड स्क्रिप्ट के अंदर आप नाम के विभिन्न लक्ष्य देख सकते हैं। उदाहरण के लिए समूह फ़ाइल में मेक, क्लीन और बिल्ड लक्ष्य शामिल हैं जिन्हें आप/t पैरामीटर के साथ निर्दिष्ट कर सकते हैं। डीपीआरजे फाइलों के लिए भी यही है। dproj फ़ाइलों में एक Rebuild लक्ष्य भी है। यह एक साफ और फिर एक बिल्ड करता है। यदि आप समूहफाइल के लिए एक ही प्रभाव रखना चाहते हैं तो आप दो लक्ष्यों को निर्दिष्ट कर सकते हैं:/t: स्वच्छ;

आपको/p के साथ सेट करने वाले कई पैरामीटर भी मिलेंगे। उदास सफेद जगहों को आउटपुट रोकने के लिए dcc32 को निर्देश देने के लिए कॉन्फ़िगरेशन या DCC_Quiet निर्दिष्ट करने के लिए कॉन्फ़िगरेशन की तरह।

तो कमांड लाइन से रिलीज विन्यास के साथ निर्माण कर इस आदेश है:

msbuild mygroup.groupproj /p:Configuration=Release /t:Build 

अस्वीकरण: मैं डेल्फी 2007 के MSBuild फ़ाइलों पर ध्यान दिया है। बाद में डेल्फी संस्करणों ने लक्ष्य या पैरामीटर का नाम बदल दिया होगा। यह पता लगाने के लिए बस एमएसबिल्ड स्क्रिप्ट के अंदर एक नज़र डालें। कुछ सेटअप के अलावा अन्य डेल्फी 2009 CCNET के लिए MSBuild के लिए कार्यों की एक विशिष्ट सेट है, और -

+1

यह जानना बहुत उपयोगी है कि आप यह कर सकते हैं/टी: बिल्ड ऑन एक समूहप्रोजे –

+0

@ldsandon: हाँ, आरएडी और दस्तावेज एक साथ अच्छी तरह से नहीं जाते हैं ... – mjn

+1

@ldsandon: माइक्रोसॉफ्ट एमएसबिल्ड दस्तावेज के लिए जिम्मेदार है; आखिरकार, यह उनका उत्पाद है। शायद आपको [MSBNild संदर्भ] (http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx) के लिए अपनी वेबसाइट - [एमएसडीएन] (http://msdn.microsoft.com) जांचनी चाहिए? –

4

मुझे यकीन है कि अगर यह तुम क्या जरूरत है नहीं कर रहा हूँ, लेकिन मैं निरंतर एकीकरण करने के लिए CruiseControl.NET सेटअप - और DUnit परीक्षण मुद्दों, यह मेरे लिए पूरी तरह से काम करता है।

मैं आपको बता सकता हूं कि मुझे क्या करना है यदि आपको आवश्यकता हो तो काम करने के लिए मुझे क्या करना है।

मार्क

+0

क्या आपने टीमसिटी भी कोशिश की है? इसमें एक मुफ्त 'पेशेवर' लाइसेंस है। – mjn

+0

मुझे CruiseControl.NET में रूचि है। कृपया आपके पास "CruiseControl.NET" जानकारी वाले किसी भी "डेल्फी" के लिए एक लिंक पोस्ट करें। –

+0

आप मेरे ब्लॉग को देख सकते हैं, मुझे लगता है कि वहां कुछ है। यदि नहीं, तो मैं निश्चित रूप से कुछ जोड़ सकता हूं, क्योंकि मैंने अभी तक नवीनतम संस्करण में अपग्रेड किया है। – Mmarquee

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