टीमबाइट MSBuild चरण में "/ संपत्ति:" के बजाय "बिल्ड पैरामीटर" का उपयोग करने के लिए कहता है। इसका क्या मतलब है?


80

मेरे पास अपने CI बिल्ड करने के लिए एक TeamCity सर्वर सेटअप है। मैं C # समाधान का निर्माण और परीक्षण कर रहा हूं और कुछ कस्टम MSBuild कार्य चला रहा हूं। इन कार्यों में से एक मेरे निर्माण में चेतावनी को मुद्रित कर रहा है ...

MSBuild कमांड लाइन के मापदंडों में "/ संपत्ति:" या "/ p:" पैरामीटर शामिल हैं। कृपया इसके बजाय बिल्ड पैरामीटर का उपयोग करें।

मुझे समझ नहीं आ रहा है कि इसका क्या मतलब है या इसे कैसे हटाया जाए। यह अच्छी तरह से (टाइपो के साथ या बिना) Google नहीं करता है। मैंने कमांड लाइन से कार्य को चलाया (साथ /verbosity:diagnostic) और यह प्रकट नहीं होता है, इसलिए मेरा मानना ​​है कि यह टीमसिटी संदेश है।

MSBuild कार्य है

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

और प्रासंगिक TeamCity चरण की जानकारी है

MSBuild संस्करण: 4.0
MSBuild ToolsVersion: 4.0
रन प्लेटफ़ॉर्म: x64
लक्ष्य: InstallDb
कमांड लाइन पैरामीटर: /property:DbPath=%env.DB_PATH%


5
@AnneTheAgile आप बस एक TeamCity सिस्टम बिल्ड पैरामीटर जोड़ें । यह आपके द्वारा उल्लिखित बिल्ड पैरामीटर के 3 प्रकारों में से एक है। आप इसे 'सिस्टम' की तरह नाम देते हैं। <name-of-my-build-पैरामीटर> 'और वह मान प्रदान करें जो आप चाहते हैं। टीमसिटी अपने आप इसे MSBuild को भेज देगी। आप बिल्ड रिपोर्ट में पैरामीटर के मान की जांच कर सकते हैं। मापदंडों के लिए एक टैब है जहां वे सभी सूचीबद्ध होते हैं।
एंथनी मस्तरीन

जवाबों:


58

आपको कॉन्फ़िगरेशन में चर के Build Parametersतहत जोड़ना होगाProperties and environment

`यहाँ छवि विवरण दर्ज करें

तो Build StepMSBUild के लिए कमांड लाइन के मापदंडों में , निर्दिष्ट की गई किसी भी संपत्ति को हटा दें /p:और उनमें से प्रत्येक को Build Parameters(ऊपर स्क्रीनशॉट) जोड़ें और मान दें


5
@Anthony Mastrean Yes -Build parameters are passed to a build. Build parameters can be of two types: system properties and environment variables. Environment variables are supported by any build runner, however system properties are only available for build runners with property notion. For example, Command line runner does not support properties.
मनोज्ञ

8
धन्यवाद! यह काम किया है, लेकिन वास्तव में कार्यान्वयन / उपयोग को समझने के लिए मुझे इस डॉक्टर पर जाना पड़ा ।
एंथनी मस्तरीन

2
टीम सिटी डॉक्स से: कॉन्फ़िगरेशन पैरामीटर टेम्पलेट से विरासत में मिली बिल्ड कॉन्फ़िगरेशन में कुछ सेटिंग्स को ओवरराइड करने का एक तरीका प्रदान करते हैं। वे कभी भी एक निर्माण के लिए पारित नहीं होते हैं।
topwik

8
यह एक समस्या लगती है यदि आपके पास एक ही बिल्ड कॉन्फ़िगरेशन के भीतर दो MSBuild चरण हैं जो एक ही पैरामीटर का उपयोग करते हैं, लेकिन विभिन्न मान। यदि उन्हें "बिल्ड कॉन्फ़िगरेशन" स्तर पर परिभाषित किया जाना है, तो ऐसा लगता है कि एक ही चरण में एक ही परम के विभिन्न मूल्यों को पारित करना असंभव है।
TSmith

2
यह बहुत अच्छा होगा। सिवाय इसके एक बग के। यदि आप चाहते हैं कि विभिन्न पैरामीटर दो अलग-अलग बिल्ड चरणों में पारित हो जाएं जो समान पैरामीटर नाम साझा करते हैं?
डग

39

यह सब पर्दे के पीछे होता है! आपको बस सही सम्मेलनों का पालन करना होगा। आपकी MSBuild स्क्रिप्ट में, आप नियमित चर संकेतन का उपयोग करते हैं

$(DbPath)

और TeamCity में, आप एक सिस्टम या एनवी चर को परिभाषित करते हैं

system.DbPath

TeamCity अपने MSBuild कार्य में स्वचालित रूप से अपने सभी सिस्टम / env वैरिएबल को भेज देगा, जिससे 'सिस्टम' या 'env' भाग हटा दिया जाएगा। और आपको /property:DbPath=system.DbPathअपने TeamCity कार्य में लिखना नहीं है ।


डॉक्स के अनुसार , केवल सिस्टम वेरिएबल को स्क्रिप्ट में इंजेक्ट किया जाता है।
ladenedge

1
जैसा कि मैंने इसे समझा, पर्यावरण संस्करण बिल्ड एजेंट पर वास्तविक पर्यावरण संस्करण के रूप में सेट किए गए हैं। हालाँकि वे सिस्टम स्क्रिप्ट की तरह बिल्ड स्क्रिप्ट / स्टेप को पास नहीं कर सकते, वे उपयोग के लिए उपलब्ध हैं। MSBuild के लिए मान प्रदान करने के लिए $(MyVar)वातावरण var का उपयोग करना चाहिए क्योंकि मेरे पास TeamCity का वातावरण var है जो एक नासमझ cmd लाइन टूल के लिए एक मूल्य प्रदान कर रहा है जिसे मैं MSBuild के साथ कहता हूं।
एंथनी मस्तरीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.