मैं Visual Studio 2015 में C # 6 समर्थन को कैसे अक्षम करूं?


136

पृष्ठभूमि

हमारे पास एक ऐसी परियोजना है जिसे हम वीएस 2015 में सी # 6 के साथ विकसित कर रहे हैं, जो कभी-कभी डेवलपर्स द्वारा वी 2013 के बिना सी # 6 का उपयोग करके खोलने की आवश्यकता होती है।

इस विशेष समाधान के भीतर C # 6 का उपयोग करने का हमारा कोई इरादा नहीं है (जितना मैं चाहूंगा)।

संकट

Visual Studio और ReSharper सुझाव देते हैं कि C # 6 के बिना विजुअल स्टूडियो के पुराने संस्करणों में असंगत को हल करने वाले उपयोगी C # 6 भाषा निर्माण का समर्थन किया जाए।

मैंने ReSharper C # 6 समर्थन को अक्षम कर दिया है लेकिन मैं संपूर्ण समाधान में C # सुविधाओं को अक्षम / सीमित नहीं कर सकता।

सवाल

मैं किसी समाधान के भीतर या Visual Studio 2015 के भीतर C # से C # 5 क्षमताओं को कैसे सीमित करूं?


17
टैब, उन्नत बटन, भाषा संस्करण सेटिंग बनाएँ।
हंस पसंत

@ हंसपसंद धन्यवाद! बिलकुल ऐसा ही है। मैं इसे उत्तर रूप में लिखूंगा लेकिन यदि आप उत्तर यहाँ पोस्ट करते हैं, तो मैं आपको सही के रूप में चिह्नित करना सुनिश्चित करूँगा।
शॉनकेलेन

बिल्कुल मेरी समस्या! 2013 में हमारे समाधान को छोड़कर, लेकिन मैं इसके बजाय VS2015 का उपयोग जारी रखना चाहता हूं।
अनीश

@entre की आवश्यकता नहीं है; आप हमेशा C # 6 सुविधाओं का उपयोग नहीं कर सकते । हालांकि, विजुअल स्टूडियो और रेस्परर इन सुविधाओं का उपयोग करने वाले रिफ्लेक्टर का सुझाव देते हैं। जब तक आपकी बिल्ड मशीन C # 6 का समर्थन करती है, तब तक यह समस्या नहीं होनी चाहिए।
सीनकेलेन

मैं c # 6 का उपयोग नहीं करना चाहता ... लेकिन मैं अभी भी उन सुझावों को प्राप्त कर रहा हूं .. मैंने उन्हें resharper के लिए हटा दिया है .. लेकिन विज़ुअल स्टूडियो के लिए पूछ रहा हूं ... मुझे लगता है कि दृश्य स्टूडियो अभिप्रेरित नहीं करेगा # # 6 क्योंकि सुझाव दे रहा है। फ्रेमवर्क 4.5
harishr

जवाबों:


136

आप Properties => Build tab => Advanced button => Language Versionअपने पसंदीदा संस्करण को सेट करके प्रत्येक प्रोजेक्ट के लिए भाषा सुविधा अलग से सेट कर सकते हैं।

आपको यह महसूस करना चाहिए कि यह अभी भी नए "C # 6.0" का उपयोग करेगा। नेट कंपाइलर प्लेटफ़ॉर्म (कूटनाम रोजलिन)। हालाँकि, यह संकलक पुराने संकलक के व्यवहार का अनुकरण करेगा और आपको केवल उस विशिष्ट भाषा संस्करण पर उपलब्ध सुविधाओं तक सीमित कर देगा।


मुझे नहीं लगता कि कोई समाधान उपलब्ध है।


1
क्या आप जानते हैं कि VB.NET के लिए एक समान सेटिंग है?
ब्रैडली उफनर

2
मुझे आज पहले अपना जवाब मिल गया। stackoverflow.com/questions/31454902/…
ब्रैडली उफ़नर

1
प्रोजेक्ट प्रॉपर्टीज में बदलाव के बाद मेरा स्टूडियो सिर्फ एडिटर में C # 6.0 कोड अंकित करता है। लेकिन इसे त्रुटि के रूप में नहीं माना जाता है (सफलतापूर्वक बनाता है)।
यूजीन ग्रिज़नोव

2
यदि आपके पास कई परियोजनाएं हैं, तो मैं सीधे csproj को संपादित करने की सलाह देता हूं। पहले PropertyGroupतत्व के अंदर निम्नलिखित जोड़ें :<LangVersion>5</LangVersion>
23

VS2017 में C # 7 समर्थन को अक्षम करने के लिए बिल्कुल उसी तरह काम करता है - <LangVersion>6</LangVersion>इसके बजाय बस का उपयोग करें ।
पॉल सुर्ट

49

नीचे जोड़ें .sln.DotSettingsइसे समाधान स्तर पर अक्षम करना चाहिए

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

या यदि आपके पास कोई .sln.DotSettingsफ़ाइल नहीं है :

  1. यदि आपकी समाधान फ़ाइल को Apple.sln कहा जाता है, तो Apple.sln.DotSettings नामक एक फ़ाइल बनाएं।

  2. इसे निम्नलिखित सामग्री दें:

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
  3. समाधान बंद करें और फिर से खोलें, Resharper को आपको C # 5 चीजों के बारे में चेतावनी देनी चाहिए।

  4. जब आप अंततः C # 6 सुविधाओं का उपयोग शुरू करते हैं तो इसे हटाना न भूलें! :)


1
यह उत्तर के रूप में चिह्नित किया जाना चाहिए क्योंकि यह एक समाधान के भीतर सभी परियोजनाओं पर लागू होता है और एक फ़ाइल में जाँच की जा सकती है।
आरोपित

8
@twoleggedhorse वास्तव में यह उत्तर केवल रेस्परर के लिए प्रासंगिक है जो ओपी पहले से ही अक्षम है, इसलिए यह प्रश्न का उत्तर भी नहीं देता है।
i3arnon

1
मैं यह भी मानता हूं कि, इसे उत्तर के रूप में चिह्नित किया जाना चाहिए। ओपी ने समाधान विस्तृत सेटिंग्स के बारे में पूछा है, जो केवल यह उत्तर प्रदान करता है।
sam-xor

1
खैर, यह किसी भी तरह कोड सुधार के लिए Microsoft की अपनी सिफारिशों को दिखाने के लिए Visual Studio को रोकता नहीं है (यह उन लोगों को रोकने के लिए वास्तविक प्रश्न था)। यह उत्तर ReSharper के लिए काम करता है, Visual Studio के लिए नहीं (हम सभी ReSharper का उपयोग नहीं कर रहे हैं)।
स्टीफन रिंडिल

11

यह उपकरण जो मैंने लिखा है यदि आपकी कई परियोजनाएँ हैं जिन्हें आपको निर्धारित करने की आवश्यकता है तो आपकी मदद कर सकता है LangVersion


10

आप सभी के लिए भाषा का सुविधा सेट कर सकते हैं solutions/csprojसाथMSBuildUserExtensionsPath

के मूल्य को खोजें $(MSBuildUserExtensionsPath), यह कुछ ऐसा होना चाहिएC:\Users\$(User)\AppData\Local\Microsoft\MSBuild

फिर Force.LangVersion.ImportBefore.propsफ़ोल्डर में फ़ाइल को इसके साथ संपादित करें $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>

9

चरण पहले से ही ऊपर लिखे गए हैं, बस मेरे VS2015 के आगे एक स्क्रीनशॉट जोड़ना है:

परियोजना के गुण >> बिल्ड >> उन्नत >> भाषा संस्करण

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

मैंने C # 5.0 पर सेट किया।


8

प्रोजेक्ट एक्सप्लोरर में प्रोजेक्ट पर राइट क्लिक करें और प्रॉपर्टीज चुनें।

जब गुण टैब खुलता है तो बिल्ड चुनें और नीचे दाईं ओर एडवांस बटन पर क्लिक करें।

भाषा संस्करण नामक ड्रॉप-डाउन बॉक्स है। "C # 5.0" के लिए चयन बदलें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.