2015-10-08 8 views
8

के लिए बनाया गया है, मैंने हाल ही में विजुअल स्टूडियो 2015 में अपडेट किया है और नई सी # 6.0 सुविधाओं का उपयोग कर रहा हूं। वीएस में, सब ठीक से बनाता है।पीएस में फोर्स एमएसबिल्ड 14.0 सी # 6.0 कोड बेस

हालांकि, मैं पीएसके का निर्माण स्क्रिप्ट भाषा के रूप में करता हूं, और बिल्ड हमेशा उन स्थानों पर विफल रहता है जहां मैं C# 6.0 सुविधाओं का उपयोग करता हूं। मैं MSBuild 14.0 का उपयोग करने के लिए पीएसके को कैसे बता सकता हूं, ताकि नई सी # 6.0 विशेषताएं सही ढंग से निर्माण हो सकें?

की कोशिश की & विफल रहा:

  • psake को ढांचा संस्करण में पासिंग: अज्ञात .नेट फ्रेमवर्क संस्करण, 4,6

  • कॉल psake लागू करने से पहले VS2015 के vsvars32.bat। पीएसके अभी भी पुराने एमएसबिल्ड संस्करण का उपयोग करता है।

उत्तर

13

मैं एक ही मुद्दा & बस फ़ाइल की शुरुआत में Framework "4.6" जोड़कर .Net Framework 4.6, उपयोग करने के लिए PSake निर्माण स्क्रिप्ट कॉन्फ़िगर करके यह तय किया था। आप इस यूनिट टेस्ट को पीएसके कोड बेस dotNet4.6_should_pass.ps1

+0

धन्यवाद, यह पसंदीदा तरीका प्रतीत होता है। दुर्भाग्य से यह मेरी मशीन पर काम नहीं करता है। लेकिन मुझे एक कामकाज मिला, मैं इसे जल्द ही यहां एक और जवाब के रूप में पोस्ट करूंगा। – theDmi

+0

या psake.ps1 को कॉल करते समय -फ्रेमवर्क पैरामीटर का उपयोग करें – piers7

3

@WahidShalaly द्वारा वर्णित समाधान सही एक प्रतीत होता है, इसलिए इसका उपयोग करें। लेकिन, मेरा मशीन पर यह अभी भी नहीं सही MSBuild संस्करण इसलिए यहाँ मिला वैकल्पिक हल मैं बजाय जगह में है कि है:

अपने PSake स्क्रिप्ट के लिए निम्न कार्य करें:

Task SetEnvironment { 
    Exec { & $env:VS140COMNTOOLS\vsvars32.bat } 
} 

यह सेट पीएसके के भीतर से VS2015 संकलन के लिए वातावरण।

अब MSBuild को कॉल करने वाले प्रत्येक कार्य से SetEnvironment पर निर्भरता जोड़ें और msbuild के बजाय msBuild.exe का उपयोग करें। उदाहरण:

Task Compile -Depends SetEnvironment { 
    Exec { & "msbuild.exe" "theSolution.sln" /p:VisualStudioVersion=14.0 } 
} 
संबंधित मुद्दे