tfs2010 केवल वीएस2013 के साथ एक टीएफएस बिल्ड सर्वर पर वीएस2013 बनाएँ




tfsbuild visual-studio-2013 (4)

मैं वीएस -2010 से वीएस2013 तक हमारी विकास टीम के प्रवासन का समर्थन करने के लिए एक नया निर्माण सर्वर स्थापित कर रहा हूं। हम अभी तक हमारे टीएफएस सर्वर माइग्रेट नहीं कर रहे हैं, इसलिए नया बिल्ड सर्वर 2 एजेंटों के साथ वीएस -2010 बिल्ड कंट्रोलर के रूप में स्थापित किया गया है। मैंने मशीन पर वीएस2013 भी स्थापित किया है (स्लेज हथौड़ा दृष्टिकोण)।

हमारे सभी कोड को लक्षित करने के लिए माइग्रेट किया गया है .NET 4.5.1 और डेवलपर के वर्कस्टेशन पर ठीक संकलित करता है।

हमारे अधिकांश समाधान वेब प्रोजेक्ट वाले समाधान को छोड़कर ठीक बनाते हैं। ये परियोजनाएं शिकायत कर रही हैं:

आयातित प्रोजेक्ट "सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets" नहीं मिला था।

आयातित परियोजना इन दो पंक्तियों के माध्यम से निर्माण प्रक्रिया में VisualStudioVersion चर का उपयोग कर रही है:

<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

जो इस पृष्ठ के अनुसार है:

http://msdn.microsoft.com/en-us/library/vstudio/bb383796.aspx

4.5 और 4.5.1 लक्ष्यों दोनों के लिए "11.0" पर सेट किया जाएगा। लेकिन बिल्ड मशीन में केवल उपरोक्त पथ का 12.0 संस्करण है:

"सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications \ Microsoft.WebApplication.targets"

ये वही .csproj लाइनों का उपयोग एक ब्रांड नई वीएस2013 प्रोजेक्ट में किया जाना प्रतीत होता है, इसलिए मुझे यकीन नहीं है कि यह बिल्ड मशीन पर कभी भी सही तरीके से कैसे हल हो सकता है।


यह इस भाग में csproj फ़ाइल में Vs2012 जोड़ने के कारण है:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>

आप उस हिस्से को सुरक्षित रूप से हटा सकते हैं और आपका समाधान तैयार होगा।

आपको यह सुनिश्चित करना होगा कि .proj फ़ाइल <Project ToolsVersion="12" अन्यथा अगली बार जब आप विजुअल स्टूडियो 2010 के साथ प्रोजेक्ट खोलेंगे, तो यह हटाए गए नोड को फिर से जोड़ देगा।

अन्यथा यदि आपको वेब परिनियोजन का उपयोग करने की आवश्यकता है या आप एक बिल्ड सर्वर का उपयोग करते हैं तो उपर्युक्त समाधान काम नहीं करेगा लेकिन आप अपनी बिल्ड स्क्रिप्ट में VisualStudioVersion प्रॉपर्टी निर्दिष्ट कर सकते हैं:

msbuild myproject.csproj /p:VisualStudioVersion=12.0

या अपनी बिल्ड परिभाषा संपादित करें:


बिल्ड सर्वर पर msbuild चलाते समय आप VisualStudioVersion प्रॉपर्टी निर्दिष्ट कर सकते हैं

msbuild myproject.csproj /p:VisualStudioVersion=12.0

आप बिल्ड टेम्पलेट को संपादित करके टूल्स वर्जन को ठीक करने में सक्षम होना चाहिए।

टेम्पलेट .xaml फ़ाइल खोलें और "प्रोजेक्ट के लिए एमएसबिल्ड चलाएं" गतिविधि ढूंढें। गुणों में उपकरण संस्करण सेट करने का विकल्प होता है। यदि आवश्यक हो, तो आप कॉन्फ़िगर करना आसान बनाने के लिए टेम्पलेट स्तर की संपत्ति बना सकते हैं।


मैं एक समान मुद्दे में भाग गया ... और यही कारण है कि। वीएस2013 से शुरू, एमएसबिल्ड को .NET Framework के बजाय विजुअल स्टूडियो के हिस्से के रूप में भेज दिया गया है। इस एमएसडीएन ब्लॉग का संदर्भ लें।

तो मेरी समस्या को हल करने के लिए [सही तरीका], मुझे "सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \" के बजाय "C: \ Windows \ Microsoft.NET \ Framework64 \ v4 के बजाय MSBuild का उपयोग करना पड़ा .0.30319 \ "