2011-01-20 14 views
16

मैं एक परियोजना है कि वी.एस. 2008 में ठीक निर्माण कर रहा था, और फिर हम स्थापित किया है और TFS का निर्माण का उपयोग शुरू किया, और फिर हम TFS 2010 तक उन्नत किया है सबकुछ अभी भी ठीक था और सही ढंग से निर्माण कर रहा था (मैंने अपनी नई बिल्ड प्रक्रिया को लागू करने के बाद किसी भी रिमोट विजुअल स्टूडियो 2010 क्लाइंट से सिंगल-क्लिक बिल्ड दीक्षा के साथ सब कुछ बहुत अच्छा बना दिया)। बिल्ड स्टूडियो पर विजुअल स्टूडियो को स्थापित करने की आवश्यकता नहीं थी। मैं बहुत कठिन कोशिश कर रहा हूं (बहुत हार्ड) बिल्ड एजेंट पर विजुअल स्टूडियो स्थापित नहीं करना क्योंकि मेरी समझ यह है कि यह आवश्यक नहीं है, और हमें इसे गैर-विकास मशीन पर स्थापित करने के लिए लाइसेंस नहीं दिया गया है।एक VS2010 MakeFile परियोजना (vcxproj) TFS का निर्माण (कोई वी.एस. 2010) के साथ निर्माण करने के लिए कैसे

अब मैं VS 2010 का हल उन्नयन, अभी भी लक्षित कर .NET 3.5, क्योंकि यह एक विधानसभा एसक्यूएल सर्वर CLR प्रक्रियाओं के लिए लक्षित है, और SQL सर्वर अभी तक .NET 4.0 का समर्थन नहीं करता की कोशिश की। लेकिन मैं बस इसे टीएफएस बिल्ड के तहत और अधिक नहीं बना सकता। मुझे टीएफएस बिल्ड और एमएस बिल्ड कमांड लाइन से लगातार त्रुटि संदेश नहीं मिल रहा है, लेकिन मुझे लगता है कि इसका माइक्रोसॉफ्ट के साथ कुछ करना है। सीपीपी। लक्ष्य सी में नहीं हैं: \ प्रोग्राम फ़ाइलें \ MSBuild \ क्योंकि मैं हेवन विजुअल स्टूडियो स्थापित नहीं है। मैंने माइक्रोसॉफ्ट विंडोज एसडीके 7.1 स्थापित किया ताकि मैं .NET 4.0 एसडीके टूल्स जैसे कुछ अन्य .NET 4.0 प्रोजेक्ट्स के लिए svcutil चला सकूं, लेकिन कुछ भी ऐसा नहीं लगता है कि यह बिल्ड क्या चाहता है।

C: \ TFSBld [...] \ GenerateLanguage \ GenerateLanguage.vcxproj (46,3): त्रुटि MSB4019: आयातित परियोजना "C: \ Microsoft.Cpp त्रुटि TFS का निर्माण मैं देता .Default.props " नहीं मिला था। पुष्टि करें कि में पथ सही है, और यह कि डिस्क डिस्क पर मौजूद है।

और जब मुझे लगता है कि त्रुटि पर क्लिक करें यह मुझे vcxproj फ़ाइल में इस लाइन के लिए ले जाता है:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> 

सभी मैं वास्तव में इस परियोजना में क्या करने की जरूरत resgen resx फ़ाइलों से संसाधनों फ़ाइलें उत्पन्न करने के लिए चलाया जाता है , और उन्हें सैटेलाइट असेंबली में संकलित करें। मैं ऐसा करने के लिए मेकफ़ाइल बिल्ड का उपयोग कर रहा था, मैन्युअल रूप से रेजेन चला रहा था (मुझे लगता है कि ऐसा इसलिए था क्योंकि मुझे किसी अन्य तरीके से स्टैंडअलोन समाधान के रूप में सट्टालाइट असेंबली को संकलित करने का कोई तरीका नहीं मिल रहा है), और फिर उन्हें एक डीएलएल (I यह याद नहीं कर सकता कि अब यह कैसे काम करता है, लेकिन मुझे लगता है कि यह संसाधन फ़ाइलों से DLL फ़ाइलों को संकलित करने के लिए मैन्युअल रूप से AL.exe चला रहा था)। इसलिए मूल रूप से मुझे इस प्रोजेक्ट को बनाने के लिए कमांड लाइनों को चलाने की जरूरत है, और मुझे पूरी परियोजना को फेंकने और टीएफएस बिल्ड स्क्रिप्ट को संपादित करने के लिए हार्ड-कोडेड कमांड लाइनों का एक गुच्छा चलाने के लिए इसे करने का उचित तरीका नहीं दिख रहा है। बजाय। एक बेहतर तरीका होना चाहिए।

मैं इस पूरे दिन में किया गया है, और अपने ही .targets फ़ाइल और .xml संपत्ति चादरें लेखन मानक फ़ाइल की जगह लेने की कोशिश की है, लेकिन यह मेरे सिर पर रास्ता नहीं है। मैंने लाइनों को आसानी से हटाने की कोशिश की, लेकिन फिर एमएसबिल्ड शिकायत करता है कि कोई "बिल्ड" लक्ष्य नहीं है। मैंने vcxproj फ़ाइल में एक डमी जोड़ने का प्रयास किया, लेकिन फिर यह पूर्व-और पोस्ट-बिल्ड चरणों को चलाने के लिए प्रतीत नहीं होता था जहां सभी काम किए जाते हैं।

+0

ऐसा लगता है कि इस प्रश्न का उत्तर यहां दिया जा चुका है: http://stackoverflow.com/questions/3043294/how-to-build-a-vs2010-c-project-on-a-buildserver क्या है इस प्रश्न को अद्यतन/निकालने का सही तरीका? – BlueMonkMN

उत्तर

15

माइक्रोसॉफ्ट विंडोज एसडीके 7.1 में कई इंस्टॉलेशन विकल्प हैं। केवल ".NET विकास" बच्चे "टूल्स" चेक किए जाने के कारण स्पष्ट रूप से vcxproj प्रोजेक्ट बनाने के लिए पर्याप्त नहीं है, भले ही उनमें कोई भी C++ कोड शामिल न हो (केवल पूर्व- और पोस्ट-बिल्ड चरण)। "विजुअल सी ++ कंपाइलर्स" विकल्प जोड़ना और "इंटेलिजेंस और रेफरेंस असेंबली" चेकबॉक्स को पूरी तरह से चुनना आवश्यक फाइलें और सेटिंग्स इंस्टॉल करता है। मुझे यकीन नहीं है कि दोनों आवश्यक हैं, लेकिन उस संयोजन ने मेरे लिए काम किया है।

2

मैंने निम्नलिखित चरणों को शामिल करने के लिए कुछ जटिल, लेकिन कार्यात्मक कार्य तैयार किया है।

  1. कॉपी सी से इन फ़ाइलों: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 एक सिस्टम पर जहां VS2010 स्थापित किया गया है - उन्हें स्रोत नियंत्रण में जाँच ताकि वे के हिस्से के रूप प्राप्त किए गए हैं कार्यक्षेत्र:
    • Microsoft.Build.CPPTasks.Common.dll
    • Microsoft.BuildSteps.targets
    • Microsoft.Cl.Common।रंगमंच की सामग्री
    • Microsoft.Cpp.Default.props
    • Microsoft.Cpp.props
    • Microsoft.Cpp.targets
    • Microsoft.CppBuild.targets
    • Microsoft.CppCommon.targets
    • Microsoft.Link। Common.props
    • Microsoft.MakeFile.targets
    • प्लेटफार्म \ Win32 \ Microsoft.Cpp.Win32.default.props
    • प्लेटफार्म s \ Win32 \ Microsoft.Cpp.Win32.props
    • Platfotms \ Win32 \ Microsoft.Cpp.Win32.targets
  2. बदलें vcxproj फ़ाइल रिश्तेदार पथ जहाँ कार्यक्षेत्र उन फ़ाइलों के बजाय कहते हैं $ के उल्लेख करने के लिए (VCTargetsPath)।
  3. AsssemblyName विशेषता का उपयोग करके इसका संदर्भ देने के बजाय विशेषता असेंबलीफ़ाइल = "Microsoft.Build.CPPTasks.Common.dll" विशेषता का उपयोग करने के लिए लाइनों (उन सभी फ़ाइलों में) बदलें।
  4. नए स्थान की जड़ पर फ़ाइलों में "$ (VCTargetsPath) \" हटाएं ताकि यह अस्तित्व वाले VCTargetsPath मैक्रो को संदर्भित करने का प्रयास करने की बजाय अपनी भाई फाइलें पा सके। आप उन उदाहरणों को पा सकते हैं जिन्हें आपने MSBuild के साथ मशीन पर वीएस 2010 के बिना कमांड लाइन बनाने की कोशिश करके और त्रुटि संदेशों को देखकर याद किया था।
  5. इसी तरह सापेक्ष पथों के साथ बाल निर्देशिका फ़ाइलों में $ (VCTargetsPath) को प्रतिस्थापित करें।
  6. फ़ाइल के अंत में Microsoft.Cpp.Win32.targets, "< VCMessage Code =" MSB8008 ".../>" पंक्ति और निम्न संबंधित < आयात करें > आयात करें।
  7. परीक्षण और त्रुटि, कमांड लाइन निर्माण चलाएं और देखें कि मैं और क्या उल्लेख कर सकता हूं। मुझे लगता है कि इसमें से अधिकांश था।
1

एक BlueMonkMN को बेहतर विकल्प vcxproj के शीर्ष के निकट एक स्तर 1 बच्चे के रूप में

<PropertyGroup> 
    <VCTargetsPath Condition="'$(VCTargetsPath)' == ''">[path_to_the_fileset_listed]</VCTargetsPath> 
</PropertyGroup> 

जोड़ना है।

पथ में एक पर्यावरण परिवर्तनीय या कुछ अन्य प्रसिद्ध पथ शामिल हो सकते हैं।

इससे घुसपैठ कम हो जाती है और कई लाइनों को बदलने से पीछे हटना आसान होता है।

+1

क्या आपको अभी भी उन माइक्रोसॉफ्ट की आवश्यकता नहीं है। * फाइलें कहीं मशीन पर हैं? – BlueMonkMN

+0

हां, फ़ाइलों को कहीं कहीं होना है, लेकिन स्थान अत्यधिक विन्यास योग्य है। यदि आप फ़ाइलों पर पूर्ण नियंत्रण चाहते हैं, तो यह बहुत उपयोगी है, उन्हें चेक इन रखें और मूल फ़ाइलों के साथ छेड़छाड़ न करें। – jesper

+0

तो आपको फाइलें कहां मिलती हैं? कॉन्फ़िगर करने योग्य स्थान होने के कारण उन स्थानों में फ़ाइलों को प्राप्त करने के कुछ साधनों के बिना बेकार है। – BlueMonkMN

0

एक भी VCTargetsPath के लिए एक वातावरण चर को जोड़ने के साथ और अधिक सरल दृष्टिकोण:

  1. सीपीपी MSBuild फ़ोल्डर BlueMonkMN द्वारा
    • उल्लेख जानें उदा
      • नाम: VCTargetsPath
      • मूल्य: [आपके कदम से MSBuild लक्ष्य के लिए पथ 1 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
    • ओपन विंडोज वातावरण चर
      • Control Panel > System > Advanced Settings > Advanced > Environment Variables
    • के साथ एक नया उपयोगकर्ता चर जोड़ें ]
  2. विजुअल स्टूडियो को पुनरारंभ करें।
  3. हो गया। आपकी परियोजना अब निर्माण करनी चाहिए।