CS1617: अमान्य विकल्प '6' / langversion के लिए; ISO-1, ISO-2, 3, 4, 5 या डिफ़ॉल्ट होना चाहिए


89

Windows 2008 सर्वर मशीन पर एक नया ASP.NET MVC एप्लिकेशन (वीएस 2015 समुदाय से सीधे बाहर) चलाते समय उस त्रुटि को रखा गया।


3
डाउनग्रेड भाषा संस्करण 5. 5. देखिए: भाषा संस्करण कैसे बदलना है
NASSER

मेरे मामले में, मैंने संस्करण 5.2.3 से 5.2.7 तक System.Web.Mvc.dll को अपग्रेड किया है, इसने इस समस्या को ठीक किया क्योंकि संस्करण गलत है।
डिनो लियू

जवाबों:


103

बहुत सारे लोग इसमें भाग रहे हैं, इसलिए मैं यहां पोस्ट करना चाहता था।

इस आदमी के लिए एक पागल आसान वर्कअराउंड धन्यवाद मिला: Expertdebugger

बस अपने भाषा संस्करण को C # 6 से C # 5 तक डाउनग्रेड करें, जैसे:

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
        <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
</system.codedom>

langversion:6नीचे की ओर 6 से 5 तक बदलें -langversion:5

मेरे लिए इसे तय किया। उसे धन्यवाद दो।


1
बहुत बहुत धन्यवाद जिसने मेरी मदद की।
ए.एच.

28
यह सिर्फ संकलक को 6 के बजाय C # संस्करण 5 के साथ संकलन करने के लिए कह रहा है, जो कि आप नहीं चाहते हैं। यदि आप .NET 4.6 परियोजना बना रहे हैं ... तो आपको वास्तव में बदलने की क्या आवश्यकता है, यह संकलक प्रकार है, जैसे कि यह चालू है इस सवाल का दूसरा जवाब!
नूनो एगापिटो

1
या <system.cod स्वतंत्रता> ब्लॉक को हटा दें, यह समस्या को भी ठीक कर देगा।
अनुपम सिंह

5
इसे बदलो कहाँ? मेरा मतलब है कि मुझे यह कोड कहां रखना होगा?
अनब्रेकेबल

इसे अपने web.config या app.config फ़ाइल में
डालें

81

यदि आप C # 6.0 का उपयोग करना चाहते हैं:

  1. सुनिश्चित करें कि आपकी परियोजना का .NET संस्करण 4.5.2 से अधिक है।
  2. और फिर .configनिम्नलिखित संशोधनों को करने के लिए अपनी फ़ाइल की जाँच करें ।

के लिए देखो system.codedomऔर जैसा कि नीचे दिखाया है कि यह दिखेगा इसलिए इसे संशोधित:

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

ठीक वैसा ही मैं देख रहा था। मुझे .NET Framework 4.5.2 से 4.6 तक ASP.NET MVC प्रोजेक्ट को अपग्रेड करने के बाद यह त्रुटि मिलनी शुरू हुई। मुझे यकीन नहीं है, लेकिन मुझे लगता है कि विज़ुअल स्टूडियो ने खुद ही उन लाइनों को अपडेट कर दिया तो बेहतर होगा।
जिगंड

3
इसे सही उत्तर बनाया जाना चाहिए क्योंकि यह वास्तव में समस्या को ठीक करता है और संकलक को पुराने संस्करण पर वापस गिरने के बजाय नवीनतम संस्करण का उपयोग करने की अनुमति देता है
SM3RKY

1
SM3RKY से सहमत - यह उत्तर अधिक प्रासंगिक है क्योंकि यह समस्या को हल करता है, बजाय इसे दरकिनार करने के!
जॉन स्टोरी

यदि आप अपने समाधान को .net 4.6 वीएस 2015 समुदाय या इस त्रुटि के नीचे का उपयोग करके मौजूदा प्रोजेक्ट के लिए अपग्रेड करते हैं। वीएस 2015 अपडेट 3 को अपडेट करने के बाद, यह फिक्स नई परियोजनाओं के लिए डिफ़ॉल्ट रूप से आता है। हालांकि जवाब सटीक तय है!
महमुत सी।

यह मेरे लिए .net 4.6.2 प्रोजेक्ट में ASP.NET (वेबफॉर्म) और VB.NET
एरिक ह्यूलेट

14

मैंने पाया कि मेरे मामले में त्रुटि का सीधा कारण था:

बिल्ड -> उन्नत -> भाषा संस्करण

यह समझ में आता है क्योंकि त्रुटि बता रही है कि भाषा के लिए एक अमान्य विकल्प है।

लेकिन, यह पहले ठीक काम कर रहा था - इसलिए इसे चुना जाना चाहिए था। किया बदल गया? मेरी टीम के एक सदस्य को बनाम 2017 में अपग्रेड किया गया है, जबकि मैं अभी भी 2015 का उपयोग कर रहा था। परियोजना में बदलाव करने के बाद, भाषा संस्करण बदल दिया गया और मुझे स्रोत नियंत्रण पर वह परिवर्तन प्राप्त हुआ। लेकिन चयनित संस्करण मेरे बनाम के संस्करण के लिए उपलब्ध नहीं था, इसलिए यह रिक्त था - इसलिए त्रुटि। भाषा ड्रॉप डाउन में मूल्य का चयन करने के बाद (मैंने डिफ़ॉल्ट चुना), एक नई त्रुटि पॉप अप हुई। नई त्रुटि कोड की किसी भी लाइन पर एक बिल्ड विफलता का कारण बन रही थी जो c # के नए संस्करण का उपयोग करती थी। मैंने समान कार्य करने के लिए कोड को बदल दिया, लेकिन मेरे c # संस्करण सिंटैक्स और समस्या के साथ हल किया।

इसलिए जबकि त्रुटि का प्रत्यक्ष कारण वास्तव में भाषा संस्करण का एक अवैध चयन था, मूल कारण अलग-अलग बनाम / सी # संस्करणों के विरोध के कारण था।


1
इस उत्तर ने अन्य सभी की जाँच करने के बाद मेरी मदद की। धन्यवाद
MindRoasterMir

1
यह उत्तर मेरे मामले पर भी लागू होता है, जहाँ मैं C # 8 के लिए एक प्रोजेक्ट सेट चलाने की कोशिश कर रहा था, लेकिन यह मेरे दृश्य स्टूडियो 2017 में समर्थित नहीं है। केवल वीएस 2019
विनियस गेब्रियल

13

मेरे मामले में त्रुटि थी:

CS1617 के लिए अमान्य विकल्प 'नवीनतम' / langversion के लिए; ISO-1, ISO-2, डिफ़ॉल्ट या 1 से 6 की सीमा में पूर्णांक होना चाहिए।

मैंने नोटपैड के साथ अपनी .csproj फ़ाइल खोली और मैंने यह पंक्ति देखी:

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

मैंने एक पूर्णांक के लिए नवीनतम को श्रेणी 1 से 6 में बदल दिया

<LangVersion>6</LangVersion>

त्रुटि गायब हो गई!


आपका बहुत बहुत धन्यवाद! अब VS2015 और यूनिटी 2018 में डिबगिंग काम करता है
8Observer8

नोटपैड में बिल्कुल खोलने की आवश्यकता नहीं है, लेकिन दृश्य स्टूडियो से कोई प्रोजेक्ट अपलोड कर सकता है और फिर प्रोजेक्ट संपादित कर सकता है, जो इस समस्या को भी ठीक करेगा।
शांतनु

12

मेरे मामले में मैं गलत MSBuild.exe का उपयोग कर रहा था, जो इसमें पाया गया था:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

त्रुटि को हल करने के लिए, मैंने Visual Studio 2017 MSBuild.exe का उपयोग शुरू करने के लिए अपने PATH पर्यावरण चर को अपडेट किया:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

कृपया इस लिंक को विवरण के लिए देखें: त्रुटि CS1056: अप्रत्याशित चरित्र '$' एक tfs निरंतर एकीकरण प्रक्रिया पर msbuild चल रहा है


यहाँ भी, मेरे मामले में मैंने MSBuild टूल इंस्टॉल किया और "C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe" से msbuild का उपयोग किया
फाल्सटाफ

9

मेरे मामले में (परियोजना एक अन्य प्रणाली में बनाएँ):

  1. स्वच्छ परियोजना (समाधान एक्सप्लोरर में परियोजना पर राइट क्लिक करें और स्वच्छ आइटम पर क्लिक करें)।
  2. तब प्रोजेक्ट बनाएं (समाधान एक्सप्लोरर में प्रोजेक्ट पर राइट क्लिक करें और बिल्ड आइटम पर क्लिक करें)।

मैं इस प्रोजेक्ट को चला सकता हूं।


5

6 से 5 तक भाषा संस्करण को बदलने के बजाय, संकलक टैग पर "प्रकार" विशेषता को बदलें

Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

सेवा

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

4

Microsoft.Net.Compilers Nuget पैकेज को नवीनतम संस्करण में अपग्रेड करें (कम से कम 2.x)


2

मेरे लिए सबसे आसान समाधान .net Compilers को पैकेज मैनेजर के माध्यम से अपग्रेड करना था

Microsoft.Net.Compilers स्थापित करें

और फिर इस के लिए Web.Config लाइनों को बदलना

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

1

पता चला कि यह एक समस्या थी, क्योंकि ASP.NET MVC 4 प्रोजेक्ट Microsoft.Net.Compilers पैकेज के एक विशिष्ट संस्करण को संदर्भित कर रहा था। विजुअल स्टूडियो इस विशिष्ट पैकेज से कंपाइलर का उपयोग कर रहा था, न कि कंपाइलर जो कंप्यूटर पर अन्यथा स्थापित किया गया था।

VS2019 :-) से एक चेतावनी या कुछ अच्छा होता

तब समाधान Microsoft.Net.Compilers पैकेज को एक नए संस्करण में अपडेट करने के लिए है।

संस्करण 1.x C # 6 के लिए है। संस्करण 2.x C # 7 के लिए है। संस्करण 3.x C # 8 के लिए है। मुझे यह हल करने के लिए कैसे मिला यह तुरंत स्पष्ट नहीं था। विजुअल स्टूडियो सुझाव दे सकता था या संकेत दे सकता था कि मेरे द्वारा प्रोजेक्ट सेटिंग्स में एक नया संस्करण का चयन किया गया है जो अब स्थापित करने से परियोजना में स्थापित पैकेज के साथ विरोधाभासी है।

(मैंने यह पता लगाने के लिए डायग्नोस्टिक्स के स्तर MSBuild लॉगिंग को समाप्त कर दिया कि कौन सा CSC.EXE आईडीई वास्तव में उपयोग करने की कोशिश कर रहा है)

https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html



0

मैं बस के लिए बदल गया langversionहै defaultऔर यह मेरे लिए काम किया। वीएस 2015

<system.codedom>
<compilers>
  <compiler language=”c#;cs;csharp” extension=”.cs” type=”Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:default /nowarn:1659;1699;1701″>
    <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
  <compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+”>
      <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
</compilers>


0

स्वच्छ समाधान और निर्माण फिर से मेरे मामले में, जो भी पिछली सेटिंग्स बेमेल होने के कारण अवरुद्ध हो रही थीं। मैंने एक नई परियोजना का आयात किया और इसे बनाया, संस्करण और सभी बदलने की कोशिश की। समाधान को साफ करें और मेरे लिए काम करें।


0

मेरे मामले में, मैं एक पुस्तकालय डाउनलोड कर रहा था, जिसमें GITHUB से मैटबर्ग द्वारा कीक्लॉक कार्यान्वयन का नमूना कोड था: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

समाधान काफी आसान था, जैसा कि मैंने .Net फ्रेमवर्क 4.6.1 का उपयोग किया था, लेकिन परियोजना ने शुरुआत में 4.6.2 का उपयोग करने के लिए मुझसे भीख मांगी। हालाँकि मैंने इसे डाउनलोड किया था, यह पहली बार सक्रिय रूप से चुना गया था, जब विज़ुअल स्टडीज के सभी उदाहरणों को पुनः आरंभ करें (या बेहतर सभी उदाहरणों को बंद करें)। इस परियोजना को 4.6.1 में हेरफेर किया गया था (हालांकि मैं कामना करता था और ऐसा नहीं चुना गया था)।

इसलिए मैंने कॉन्फ़िगरेशन को फिर से चुनने के लिए .Net फ्रेमवर्क 4.6.1 चुनने के बाद त्रुटि तुरंत गायब कर दी।


0

मेरे मामले में त्रुटि संदेश था:

ASPNETCOMPILER: त्रुटि CS1617: / langversion के लिए अमान्य विकल्प '7.3'; ISO-1, ISO-2, डिफ़ॉल्ट या 1 से 6 की सीमा में पूर्णांक होना चाहिए।

जैसा कि इस GitHub मुद्दे में कहा गया है , और इस VS डेवलपर समुदाय पोस्ट में यह एक पुराने Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet पैकेज में एक बग प्रतीत होता है ।

इस NuGet पैकेज को 3.6.0 में अपग्रेड करने के बाद भी त्रुटि मेरे वेब एप्लिकेशन में बनी रही।

समाधान

मुझे पता चला कि मुझे यह काम करने के लिए अपने वेब एप्लिकेशन में एक पुराने "बिन \ रोसलिन" फ़ोल्डर को हटाना पड़ा।

ऐसा लगता है कि नए Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet पैकेज (मेरे मामले में 3.6.0) अब अपना खुद का "रोसिलन" फ़ोल्डर नहीं लाता है, और यदि मौजूद है, तो उस पुराने "रोसलिन" फ़ोल्डर ने संकलन के दौरान पूर्वता लिया।


0

यह मेरे साथ तब हुआ जब मैंने अपने रेपो को एक नए स्थान पर ले जाने के बाद नीचे खींच लिया। समाधान को अनलोड करना था और फिर प्रत्येक प्रोजेक्ट को फिर से लोड करना था जो इस त्रुटि को दिखा रहा था।

मैंने कुछ अन्य विकल्पों की कोशिश की लेकिन मेरे लिए कुछ भी काम नहीं किया। इसके अलावा इस स्थिति में मेरी कॉन्फिगर फाइलें भाषाविकास 6 का उपयोग करने के लिए सेट की गई थीं, इसलिए उन्हें डिफ़ॉल्ट रूप से सेट करने से समस्या ठीक नहीं हुई।


0

यदि उपरोक्त सभी विकल्प काम नहीं कर रहे हैं और आपने Microsoft.Net.Compilers और CodeDom जैसे नगेट पैकेजों का उपयोग किया है और अभी भी काम नहीं कर रहे हैं तो आपकी प्रोजेक्ट फ़ाइल ओपन प्रोजेक्ट फ़ाइल के साथ समस्या है। प्रोजेक्ट फ़ाइल एक संकलक विकल्प का उपयोग कर रही है जो आपकी चयनित भाषा का समर्थन नहीं करता है। नोटपैड ++ के साथ प्रोजेक्ट फ़ाइल खोलें और निम्न पंक्ति को हटा दें।

ओरिग्नल प्रोजेक्ट फाइल

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
  <!--Don't delete below one-->
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

निम्न पंक्तियाँ निकालें

  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.