फ़ीचर 'घोषणाओं का उपयोग' C # 7.3 में उपलब्ध नहीं है। कृपया भाषा संस्करण 8.0 या अधिक का उपयोग करें - एक मशीन पर त्रुटि लेकिन दूसरे पर काम करती है


24

Visual Studio Enterprise 16.3.7दो अलग-अलग मशीनों पर उपयोग करने पर एक ठीक बनता है और दूसरी मशीन में त्रुटि होती है:

फ़ीचर 'घोषणाओं का उपयोग' C # 7.3 में उपलब्ध नहीं है। कृपया भाषा संस्करण 8.0 या अधिक का उपयोग करें।

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

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

इसे यहां बताए गए https://stackoverflow.com/a/48085575/3850405 के रूप LangVersionमें सेट करके कोई भी कार्य करने वाली मशीन पर आसानी से हल किया जा सकता है या विजुअल स्टूडियो को स्वचालित रूप से इसे ऊपर स्क्रीन स्क्रीन की तरह ठीक करने दें।.csproj

<LangVersion>8.0</LangVersion>

मुझे समझ में नहीं आ रहा है कि एक मशीन इस लाइन के बिना ठीक क्यों बनाती है .csprojऔर दूसरी मशीन को इसकी आवश्यकता है?


आप इस तरह के एक त्रुटि मिलती है, तो इसका मतलब है कि यह नहीं एक सी # 8 परियोजना, या आप एक विश्लेषण बग के साथ एक Resharper संस्करण का उपयोग
पानागिओटिस Kanavos

आपके csproj में TargetFramework और LangVersion क्या है?
पैनागोटिस कानावोस

@PanagiotisKanavos हां, लेकिन परियोजना एक मशीन पर बनती है और दूसरे पर नहीं - यही वह है जो मुझे समझ में नहीं आता है। ReSharper का उपयोग नहीं किया जाता है।
ओग्लस

इसका मतलब यह हो सकता है कि एक मशीन पर 3.0 एसडीके गायब है। क्या dotnet --list-sdksदिखाता है?
पैनागोटिस कानावोस

@PanagiotisKanavos लक्ष्य रूपरेखा .NET Framework 4.6.1और LangVersionसेट नहीं है।
ओग्लस

जवाबों:


20

मुझे वही त्रुटि मिली, लेकिन मैं केवल शामिल करना भूल गया था

<LangVersion>8.0</LangVersion>

समाधान में सभी .csproj फ़ाइलों में विशेषता । निम्नलिखित मेरा वर्तमान c # 8 सेटअप है:

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
    <NullableContextOptions>enable</NullableContextOptions>
  </PropertyGroup>

जब कोर 2.2 से 3.x पर माइग्रेट हो रहा हो तो मुझे निम्नलिखित दस्तावेज़ सबसे अधिक उपयोगी लगे:

MSDN 2.2 -> 3.0

MSDN 3.0 -> 3.1


2
आप <LangVersion>latest</LangVersion>इसके बजाय का उपयोग कर सकते हैं<LangVersion>8.0</LangVersion>
एलियाहू आरोन

मुझे लगता है कि पहली कड़ी MSDN 2.2 -> 3.0करने के लिए नीचे दिए गए लिंक करने के लिए है: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 मैं संपादन जवाब यह संशोधन करने की कोशिश की है, लेकिन "सुझाव संपादित कतार पूर्ण है ", इसलिए यहां पोस्ट करेंगे।
अहिलियर 88

17

मुझे 16.3.X से 16.4.2 तक के संस्करण के लिए विजुअल स्टूडियो को अपडेट करना था। इससे समस्या हल हो गई और मुझे कोई LangVersion नहीं जोड़ना पड़ा।

क्रेडिट: https://github.com/aspnet/AspNetCore.Docs/issues/16047


10

ऐसा इसलिए हो सकता है क्योंकि कंपाइलर डिफ़ॉल्ट रूप से विभिन्न टारगेट फ्रेमवर्क के लिए अलग-अलग C # भाषा संस्करणों का उपयोग करता है।

डिफ़ॉल्ट C # भाषा को ओवरराइड करने के लिए, प्रोजेक्ट फ़ाइल में जोड़ें (जैसा कि प्रश्न में सुझाव दिया गया है):

<PropertyGroup>
   <LangVersion>8.0</LangVersion>
</PropertyGroup>

या:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

विभिन्न लक्ष्य रूपरेखाओं के लिए डिफ़ॉल्ट C # भाषा संस्करणों के लिए C # भाषा संस्करण देखें और C # भाषा संस्करण को मैन्युअल रूप से कैसे चुनें।

स्टैक ओवरफ्लो उत्तर भी देखें। C # 8 .NET फ्रेमवर्क का समर्थन करता है? इस विषय पर अधिक जानकारी के लिए।


यहाँ C # भाषा संस्करण लेख का हिस्सा है :

सी # भाषा संस्करण

नवीनतम सी # संकलक आपकी परियोजना के लक्ष्य ढांचे या रूपरेखा के आधार पर एक डिफ़ॉल्ट भाषा संस्करण निर्धारित करता है। ऐसा इसलिए है क्योंकि C # भाषा में ऐसी विशेषताएं हो सकती हैं जो हर .NET कार्यान्वयन में उपलब्ध प्रकार या रनटाइम घटकों पर निर्भर करती हैं। यह यह भी सुनिश्चित करता है कि आपकी परियोजना के लिए जो भी लक्ष्य बनाया गया है, उसके लिए आपको डिफ़ॉल्ट रूप से सबसे अधिक संगत भाषा संस्करण प्राप्त हो।

इस आलेख में नियम Visual Studio 2019 या .NET Core 3.0 SDK के साथ वितरित कंपाइलर पर लागू होते हैं। C # कंपाइलर जो Visual Studio 2017 इंस्टॉलेशन का हिस्सा हैं या पहले .NET कोर SDK वर्जन डिफ़ॉल्ट रूप से C # 7.0 को टारगेट करते हैं।

चूक

कंपाइलर इन नियमों के आधार पर एक डिफ़ॉल्ट निर्धारित करता है:

--------------------------------------------------------
Target framework | version | C# language version default
--------------------------------------------------------
.NET Core        | 3.x     | C# 8.0
.NET Core        | 2.x     | C# 7.3
.NET Standard    | 2.1     | C# 8.0
.NET Standard    | 2.0     | C# 7.3
.NET Standard    | 1.x     | C# 7.3
.NET Framework   | all     | C# 7.3
--------------------------------------------------------

एक डिफ़ॉल्ट को ओवरराइड करें

यदि आपको अपना सी # संस्करण स्पष्ट रूप से निर्दिष्ट करना है, तो आप ऐसा कई तरीकों से कर सकते हैं:

  • अपनी प्रोजेक्ट फ़ाइल को मैन्युअल रूप से संपादित करें।
  • एक उपनिर्देशिका में कई परियोजनाओं के लिए भाषा संस्करण सेट करें।
  • -Langversion संकलक विकल्प कॉन्फ़िगर करें।

प्रोजेक्ट फ़ाइल संपादित करें

आप अपनी परियोजना फ़ाइल में भाषा संस्करण सेट कर सकते हैं। उदाहरण के लिए, यदि आप स्पष्ट रूप से पूर्वावलोकन सुविधाओं तक पहुँच चाहते हैं, तो इस तरह से एक तत्व जोड़ें:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

मान previewनवीनतम उपलब्ध पूर्वावलोकन C # भाषा संस्करण का उपयोग करता है जो आपके संकलक का समर्थन करता है।

कई प्रोजेक्ट कॉन्फ़िगर करें

कई प्रोजेक्ट्स को कॉन्फ़िगर करने के लिए, आप एक Directory.Build.props फ़ाइल बना सकते हैं जिसमें <LangVersion>तत्व शामिल है । आप आमतौर पर अपने समाधान निर्देशिका में ऐसा करते हैं। एक निर्देशिका में निम्नलिखित जोड़ें। अपनी समाधान निर्देशिका में Bild.props फ़ाइल:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

अब, उस फ़ाइल वाली निर्देशिका के प्रत्येक उपनिर्देशिका में बनाता है पूर्वावलोकन C # संस्करण का उपयोग करेगा। अधिक जानकारी के लिए, अपने निर्माण को अनुकूलित करें पर लेख देखें ।


8

मैंने .net Core 3.0 और 3.1 का नवीनतम संस्करण डाउनलोड किया और उसी मुद्दे को रखा। मेरे लिए, दृश्य स्टूडियो 2019 के लिए नवीनतम अपडेट डाउनलोड करने के लिए फिक्स लग रहा था (16.4.2 संस्करण के लिए)।

इससे मेरा कंप्यूटर भी पुनः चालू हो गया और त्रुटि दूर हो गई।


वह VS2019 संस्करण संख्या नहीं है, वे 16.xy Use Help> About के समान दिखते हैं।
हंस पसंत

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