2017-09-26 16 views
5

के साथ C# 7.1 का उपयोग करना विजुअल स्टूडियो 2017 के साथ नए C# 7.1 language features का उपयोग करने के लिए, आप अपनी प्रोजेक्ट फ़ाइल में <LangVersion>latest</LangVersion> सेटिंग जोड़ते हैं।MSBuild

हालांकि, MSBuild से ऐसी परियोजनाओं के निर्माण (संस्करण 15.3.409.57025, C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin पर स्थित) परिणाम एक त्रुटि में:

CSC : error CS1617: Invalid option 'latest' for /langversion; 
must be ISO-1, ISO-2, Default or an integer in range 1 to 6. 

इस सुविधा अभी MSBuild द्वारा समर्थित नहीं है, या यह इसे पाने के लिए संभव है काम कर रहे? निरीक्षण के आधार पर -

यह वे सभी .NET 4.7 के लिए फिर से निशाना बनाया गया Target Framework Migrator उपकरण (जो क्लिक करने के बहुत बचाया और प्रतीत होता है का उपयोग कर 200 परियोजनाओं है कि मूल रूप विजुअल स्टूडियो 2013 और 2015 में नाना प्रकार से बनाया गया था शामिल किया गया। csproj फ़ाइल में परिवर्तन - सही ढंग से काम करने के लिए)।

परियोजनाओं सभी दृश्य स्टूडियो से सफलतापूर्वक निर्माण 2017

+0

आप अपने csproj फ़ाइल सामग्री साझा करने में सक्षम हैं? –

+0

आपका एमएसबिल्ड कहां रहता है? यहां यह 'सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin' में रहता है और भाषा तत्व जोड़ना काम करता है। क्या आपका प्रोजेक्ट विजुअल स्टूडियो से बना है? –

+0

क्या आप अपनी प्रोजेक्ट फ़ाइल को छोड़कर दिखा सकते हैं? –

उत्तर

0

हमने पाया कि हमारी एमवीसी परियोजनाएं इस मुद्दे को ट्रिगर कर रही हैं।

ठीक करने के लिए, हम 1.0.7 के संस्करण 1.0.0 से इन परियोजनाओं के द्वारा प्रयोग किया Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet पैकेज अद्यतन किया गया।

0

मैं सी # 7.1 यहाँ का उपयोग कर एक सी # कंसोल अनुप्रयोग के साथ एक समाधान मिल गया है।

वीएस 2017 कमांड लाइन (और इस प्रकार एमएसबिल्ड 15.3.40 9.57025) का उपयोग करके यह ठीक काम करता है। (.csproj<LangVersion>latest</LangVersion> शामिल नहीं करता है।)

Is this feature just not yet supported by MSBuild, or is it possible to get this working?

हाँ, यह है।

csc.exe का कौन सा उदाहरण चलाया जा रहा है और इसका संस्करण क्या है? क्योंकि ऐसा लगता है कि संस्करण को उद्धृत करने के बावजूद, आपके पास csc.exe का गलत संस्करण है (त्रुटि संदेश 1-6 कहता है, इसलिए सी # 7 भी काम नहीं करेगा)।

+0

आपके द्वारा प्रस्तावित समाधान वास्तव में क्या है? ओपी से प्रक्रियाओं में वर्णित यह सब बॉक्स से ठीक चल रहा है। –

+0

@ रिचर्ड - आपके कुछ प्रश्नों को हल करने के लिए मेरा प्रश्न अपडेट किया गया –

+1

@ पैट्रिकहोफमैन यह स्पष्ट करने के लिए अपडेट किया गया कि मैं प्रश्न के अस्तित्व के हिस्से को संबोधित कर रहा हूं। – Richard

6

Microsoft.Net.Compilers पैकेज (संस्करण 2.3.x, सी # 7.1 प्राप्त करने के लिए) का संदर्भ जोड़ें।

एक छोटी description of the package:

Microsoft.Net.Compilers

This package not only includes the C# and Visual Basic compilers, it also modifies MSBuild targets so that the included compiler versions are used rather than any system-installed versions. Once installed, this package requires Microsoft Build Tools 2015.

+0

यह मेरे लिए चाल है। मेरे पास मेरे मुख्य प्रोजेक्ट में पैकेज था, लेकिन आज मैंने एक संदर्भित परियोजना को सी # 7.1 में अपडेट किया और भूल गया कि इसमें यह NuGet पैकेज नहीं था। मुझे यह सटीक मुद्दा मिला - वीएस में बनाता है लेकिन बिल्ड सर्वर पर विफल रहता है। टिप के लिए धन्यवाद! –

+1

दरअसल ... मेरी समस्या भी मुझे DEBUG प्रोजेक्ट प्रॉपर्टी सेटिंग्स में मान बदलने के कारण हुई थी। रिलीज सेटिंग्स का दौरा करने में यह पाया गया कि यह अभी भी सी # (नवीनतम प्रमुख संस्करण) था। इसे बदलना, एक और निर्माण करना और जांचना। अब खुश :) –

2

बस सुनिश्चित करें कि आप DebugऔरRelease में कम से कम C# 7.1 या उच्च सेट किया हुआ है। इसे नवीनतम पर सेट करना काम नहीं करता है। Microsoft.Net.Compilers nuget पैकेज काम नहीं करता है और स्थापित नहीं होने की आवश्यकता है।

यह भी सुनिश्चित करें कि आप नवीनतम एमएसबिल्ड संस्करण चला रहे हैं।

preview