CS1617: ตัวเลือกไม่ถูกต้อง '6' สำหรับ / langversion; ต้องเป็น ISO-1, ISO-2, 3, 4, 5 หรือค่าเริ่มต้น


92

ได้รับข้อผิดพลาดนั้นเมื่อเรียกใช้แอปพลิเคชัน ASP.NET MVC ใหม่ (ตรงจาก VS 2015 Community) บนเครื่องเซิร์ฟเวอร์ Windows 2008


3
ดาวน์เกรดเวอร์ชันภาษาเป็น 5 ดูที่: วิธีเปลี่ยนเวอร์ชันภาษา
NASSER

ในกรณีของฉันฉันได้อัปเกรด System.Web.Mvc.dll จากเวอร์ชัน 5.2.3 เป็น 5.2.7 ได้แก้ไขปัญหานี้เนื่องจากเวอร์ชันไม่ถูกต้อง
Dino Liu

คำตอบ:


105

มีคนวิ่งเข้ามามากมายฉันจึงอยากโพสต์ที่นี่

พบบ้าขอบคุณวิธีแก้ปัญหาที่ง่ายต่อการที่ผู้ชายคนนี้: 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
นั่นเป็นเพียงการบอกให้คอมไพเลอร์คอมไพล์ด้วย C # เวอร์ชัน 5 แทนที่จะเป็น 6 ซึ่งไม่ใช่สิ่งที่คุณต้องการหากคุณกำลังสร้างโปรเจ็กต์. NET 4.6 ... สิ่งที่คุณต้องเปลี่ยนจริงๆคือประเภทคอมไพเลอร์เหมือนกับที่แสดงบน คำตอบอื่น ๆ สำหรับคำถามนี้!
Nuno Agapito

1
หรือลบบล็อก <system.codedom> ออกก็จะช่วยแก้ปัญหาได้เช่นกัน
Anupam Singh

5
เปลี่ยนตรงไหน ฉันหมายถึงต้องใส่รหัสนี้ที่ไหน
Unbreakable

ใส่ไว้ในไฟล์ web.config หรือ app.config
csharpforevermore

82

หากคุณต้องการใช้ 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>

นั่นคือสิ่งที่ฉันกำลังมองหา ฉันเริ่มได้รับข้อผิดพลาดนี้หลังจากอัปเกรดโครงการ ASP.NET MVC จาก. NET Framework 4.5.2 เป็น 4.6 ฉันไม่แน่ใจ แต่ฉันคิดว่ามันจะดีกว่าถ้า Visual Studio อัปเดตบรรทัดเหล่านั้นด้วยตัวเอง
Zignd

3
สิ่งนี้ควรเป็นคำตอบที่ถูกต้องเนื่องจากช่วยแก้ไขปัญหาได้จริงและอนุญาตให้คอมไพเลอร์ใช้เวอร์ชันล่าสุดแทนที่จะถอยกลับไปใช้เวอร์ชันเก่า
SM3RKY

1
เห็นด้วยกับ SM3RKY - คำตอบนี้มีความเกี่ยวข้องมากกว่าเมื่อแก้ปัญหาได้แทนที่จะข้ามไป!
Jon Story

หากคุณอัปเกรดโซลูชันเป็น. net 4.6 สำหรับโครงการที่มีอยู่โดยใช้ VS 2015 Community หรือต่ำกว่าข้อผิดพลาดนี้จะเกิดขึ้น หลังจากอัปเดต VS 2015 Update 3 การแก้ไขนี้จะเกิดขึ้นตามค่าเริ่มต้นสำหรับโครงการใหม่ อย่างไรก็ตามคำตอบคือการแก้ไขที่แน่นอน!
Mahmut C

สิ่งนี้แก้ไขปัญหาให้ฉันในโครงการ. Net 4.6.2 โดยใช้ ASP.NET (เว็บฟอร์ม) และ VB.NET
Eric Hewett

14

ฉันพบว่าสาเหตุโดยตรงของข้อผิดพลาดในกรณีของฉันคือ:

สร้าง -> ขั้นสูง -> เวอร์ชันภาษา

สิ่งนี้สมเหตุสมผลเนื่องจากข้อผิดพลาดระบุว่ามีตัวเลือกที่ไม่ถูกต้องสำหรับภาษา

แต่ก่อนหน้านี้ใช้งานได้ดี - ดังนั้นจึงต้องเลือก มีอะไรเปลี่ยนแปลง? ปรากฎว่าสมาชิกคนหนึ่งในทีมของฉันอัปเกรดเป็นเทียบกับ 2017 ในขณะที่ฉันยังใช้ปี 2015 อยู่หลังจากที่เขาทำการเปลี่ยนแปลงในโปรเจ็กต์เวอร์ชันของภาษาก็เปลี่ยนไปและฉันได้รับการเปลี่ยนแปลงนั้นในการควบคุมแหล่งที่มา แต่เวอร์ชันที่เลือกไม่สามารถใช้ได้กับเวอร์ชัน VS ของฉันดังนั้นจึงว่างเปล่า - ด้วยเหตุนี้ข้อผิดพลาด หลังจากเลือกค่าในภาษาแบบเลื่อนลง (ฉันเลือกค่าเริ่มต้น) ข้อผิดพลาดใหม่ก็ปรากฏขึ้น ข้อผิดพลาดใหม่ทำให้การสร้างล้มเหลวในบรรทัดของโค้ดใด ๆ ที่ใช้ c # เวอร์ชันใหม่กว่า ฉันเปลี่ยนรหัสเพื่อทำหน้าที่เดียวกัน แต่ด้วยไวยากรณ์เวอร์ชัน c # ของฉันและแก้ไขปัญหาได้

ดังนั้นในขณะที่สาเหตุโดยตรงของข้อผิดพลาดคือการเลือกเวอร์ชันภาษาที่ไม่ถูกต้องสาเหตุหลักเกิดจากเวอร์ชัน VS / c # ที่แตกต่างกันที่ขัดแย้งกัน


1
คำตอบนี้ช่วยฉันหลังจากตรวจสอบคนอื่น ๆ ทั้งหมดแล้ว ขอบคุณ
MindRoasterMir

1
คำตอบนี้ยังใช้กับกรณีของฉันที่ฉันพยายามรันโปรเจ็กต์ที่ตั้งค่าเป็น C # 8 แต่ไม่รองรับ Visual Studio 2017 ของฉัน VS 2019 เท่านั้น
Vinícius Gabriel

13

ในกรณีของฉันข้อผิดพลาดคือ:

ข้อผิดพลาด CS1617 ไม่ถูกต้องตัวเลือก 'ล่าสุด' สำหรับ / langversion; ต้องเป็น ISO-1, ISO-2, ค่าเริ่มต้นหรือจำนวนเต็มในช่วง 1 ถึง 6

ฉันเปิดไฟล์. csproj ด้วย notepad และฉันเห็นบรรทัดนี้:

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

ฉันเปลี่ยนค่าล่าสุดสำหรับจำนวนเต็มในช่วง 1 ถึง 6

<LangVersion>6</LangVersion>

ข้อผิดพลาดหายไป!


ขอบคุณมาก! ตอนนี้กำลังแก้ไขข้อบกพร่องใน VS2015 และ Unity2018 ทำงาน
8Observer8

ไม่จำเป็นต้องเปิดอย่างแน่นอนใน notepad แต่จาก Visual studion เราสามารถอัปโหลดโปรเจ็กต์แล้วแก้ไขโปรเจ็กต์ซึ่งจะช่วยแก้ปัญหานี้ได้เช่นกัน
Shantu

12

ในกรณีของฉันฉันใช้ MSBuild.exe ผิดอันที่พบใน:

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

ในการแก้ไขข้อผิดพลาดฉันอัปเดตตัวแปรสภาพแวดล้อม PATH ของฉันเพื่อเริ่มใช้ Visual Studio 2017 MSBuild.exe:

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

โปรดดูรายละเอียดที่ลิงค์นี้: ข้อผิดพลาด CS1056: อักขระที่ไม่คาดคิด '$' ที่เรียกใช้ msbuild ในกระบวนการรวม tfs ต่อเนื่อง


เหมือนกันที่นี่ในกรณีของฉันฉันติดตั้ง MSBuild Tools และใช้ msbuild จาก "C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe"
falstaff

10

ในกรณีของฉัน (โครงการสร้างในระบบอื่น):

  1. โครงการที่สะอาด (คลิกขวาที่โครงการในตัวสำรวจโซลูชันและคลิกรายการสะอาด)
  2. จากนั้นสร้างโครงการ (คลิกขวาที่โครงการในตัวสำรวจโซลูชันและคลิกสร้างรายการ)

ฉันสามารถดำเนินโครงการนี้ได้


5

แทนที่จะเปลี่ยนเวอร์ชันภาษาจาก 6 เป็น 5 ให้เปลี่ยนแอตทริบิวต์ "type" บนแท็กคอมไพเลอร์จาก

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)


3

ทางออกที่ง่ายที่สุดสำหรับฉันคือการอัพเกรด. Net Compiler ผ่าน Package Manager

ติดตั้งแพ็คเกจ 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 Visual Studio ใช้คอมไพเลอร์จากแพ็คเกจเฉพาะนี้ไม่ใช่คอมไพเลอร์ที่ติดตั้งไว้ในคอมพิวเตอร์

คำเตือนหรือสิ่งที่ดีจาก VS2019 :-)

วิธีแก้ไขคือการอัปเดตแพคเกจ Microsoft.Net.Compilers เป็นเวอร์ชันที่ใหม่กว่า

เวอร์ชัน 1.x สำหรับ C # 6 เวอร์ชัน 2.x สำหรับ C # 7 เวอร์ชัน 3.x สำหรับ C # 8 วิธีแก้ปัญหานี้ยังไม่ชัดเจนในทันที Visual Studio อาจแนะนำหรือบอกใบ้ว่าโดยฉันเลือกเวอร์ชันใหม่ในการตั้งค่าโปรเจ็กต์ที่การตั้งค่าตอนนี้ขัดแย้งกับแพ็คเกจที่ติดตั้งในโปรเจ็กต์

(ฉันลงเอยด้วยการเปิดการบันทึก MSBuild ระดับการวินิจฉัยเพื่อค้นหาว่า CSC.EXE IDE ใดพยายามใช้จริงๆ)

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



0

ฉันแค่เปลี่ยนlangversionไปdefaultและมันได้ผลสำหรับฉัน VS 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

Clean Solution และสร้างอีกครั้งในกรณีของฉันสิ่งที่การตั้งค่าก่อนหน้านี้ถูกบล็อกเนื่องจากไม่ตรงกัน ฉันนำเข้าโครงการใหม่และสร้างขึ้นลองเปลี่ยนเวอร์ชันและทั้งหมด ทำความสะอาดโซลูชันและสร้างได้ผลสำหรับฉัน


0

ในกรณีของฉันฉันกำลังดาวน์โหลดไลบรารีที่มีตัวอย่างรหัสการใช้งาน keycloak โดย mattorg จาก GITHUB: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

วิธีแก้ปัญหานั้นค่อนข้างง่ายเนื่องจากฉันใช้. Net Framework 4.6.1 แต่โครงการขอร้องให้ฉันใช้ 4.6.2 ในตอนแรก แม้ว่าฉันจะดาวน์โหลดมัน แต่มันก็ถูกเลือกเป็นครั้งแรกเมื่อรีสตาร์ทอินสแตนซ์ของ Visual Studion ทั้งหมด (หรือดีกว่าปิดอินสแตนซ์ทั้งหมด) โครงการได้รับการจัดการเป็น 4.6.1 (แม้ว่าฉันไม่ต้องการและเลือกเช่นนั้น)

ดังนั้นหลังจากที่ฉันเลือกการกำหนดค่าอีกครั้งเพื่อเลือก. Net Framework 4.6.1 ข้อผิดพลาดก็หายไปทันที


0

ในกรณีของฉันข้อความแสดงข้อผิดพลาดคือ:

ASPNETCOMPILER: ข้อผิดพลาด CS1617: ตัวเลือกไม่ถูกต้อง '7.3' สำหรับ / langversion; ต้องเป็น ISO-1, ISO-2, ค่าเริ่มต้นหรือจำนวนเต็มในช่วง 1 ถึง 6

ตามที่ระบุไว้ในปัญหา GitHub นี้และชุมชนนักพัฒนา VS นี้ดูเหมือนว่าจะเป็นข้อบกพร่องในแพ็คเกจMicrosoft.CodeDom.Providers.DotNetCompilerPlatform NuGet รุ่นเก่า

หลังจากอัปเกรดแพ็คเกจ NuGet เป็น 3.6.0 แล้วข้อผิดพลาดยังคงอยู่ในเว็บแอปพลิเคชันของฉัน

วิธีการแก้

ฉันพบว่าฉันต้องลบโฟลเดอร์ "bin \ Roslyn" เก่าในเว็บแอปพลิเคชันของฉันเพื่อให้สามารถใช้งานได้

ดูเหมือนว่าแพ็คเกจ Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet ที่ใหม่กว่า (3.6.0 ในกรณีของฉัน) ไม่ได้นำโฟลเดอร์ "Rosyln" ของตัวเองมาใช้อีกต่อไปและถ้ามีโฟลเดอร์ "Roslyn" เก่านั้นจะมีความสำคัญเหนือกว่าในระหว่างการคอมไพล์


0

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันดึง repo ของฉันลงหลังจากย้ายไปยังที่ตั้งใหม่ วิธีแก้ปัญหาคือการยกเลิกการโหลดแล้วโหลดใหม่แต่ละโปรเจ็กต์ที่แสดงข้อผิดพลาดนี้

ฉันลองใช้ตัวเลือกอื่น ๆ แต่ไม่มีอะไรได้ผลสำหรับฉัน นอกจากนี้ในสถานการณ์นี้ไฟล์กำหนดค่าของฉันถูกตั้งค่าให้ใช้ภาษาเวอร์ชัน 6 ดังนั้นการตั้งค่าเป็นค่าเริ่มต้นจึงไม่สามารถแก้ไขปัญหาได้


0

หากตัวเลือกข้างต้นทั้งหมดไม่ทำงานและคุณใช้แพ็คเกจ nuget เช่น Microsoft.Net.Compilers และ CodeDom แล้วยังไม่ทำงานแสดงว่ามีปัญหากับไฟล์โครงการที่เปิดไฟล์โครงการของคุณ ไฟล์โครงการใช้หนึ่งในตัวเลือกคอมไพเลอร์ซึ่งไม่รองรับภาษาที่คุณเลือก เปิดไฟล์โครงการด้วย notepad ++ และลบบรรทัดต่อไปนี้

ไฟล์โครงการ Orignal

<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')" />
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.