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


90

ฉันพยายามกำหนดเป้าหมาย. NET 4.6 และใช้ประโยชน์จาก C # เวอร์ชันล่าสุดโดยเปลี่ยนเวอร์ชันภาษา C # เป็น 6

อย่างไรก็ตามในระหว่างการรวบรวมฉันได้รับข้อผิดพลาดนี้:

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

หากฉันอัปเดตการ/langversion:6ตั้งค่าใน Web.Config เป็น 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">

แต่ฉันจะแก้ไขปัญหานี้ได้อย่างไรโดยไม่ต้องใช้เวอร์ชันภาษาที่ต่ำกว่า

ฉันใช้ Visual Studio 2015 Community Edition และฉันได้ติดตั้ง. NET Framework 4.6 ด้วยตนเองในกรณีที่ไม่ได้ติดตั้งโดยค่าเริ่มต้นโดย Visual Studio 2015

โครงการนี้เป็นโครงการเทมเพลต ASP.NET MVC มาตรฐานที่สร้างโดย Visual Studio 2015


1
ในกรณีของฉันฉันต้องลบ/langversion:6...
bohdan_trotsenko

@modosansreves นั่นจะเปลี่ยนกลับเป็นเวอร์ชันภาษาเริ่มต้น .. ซึ่งก็คือ C # 5 ฉันเชื่อว่า ... โปรดตรวจสอบว่าคุณสามารถใช้คุณลักษณะภาษา C # 6 ใด ๆ ได้หรือไม่
Rosdi Kasim

แน่นอน. สิ่งนี้กีดกันการใช้คุณสมบัติ C # 6 ขอบคุณ.
bohdan_trotsenko

คำตอบ:


89

ให้ความสนใจกับคอมไพเลอร์ "type" ในWeb.Configไฟล์เมื่อเปลี่ยนเวอร์ชัน Framework:

สำหรับ 4.5 และ C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

สำหรับ 4.6 และ C # 6 -

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

ข้อมูลเพิ่มเติมในโพสต์ในฟอรัมนี้


20
มันใช้งานได้! .. แม้ว่าฉันจะถือว่าเป็นข้อผิดพลาดใน Visual Studio 2015 ที่ไม่ได้อัปเดตโดยอัตโนมัติเมื่อฉันกำหนดเป้าหมายแอปพลิเคชันของฉันใหม่เป็น. NET 4.6 และ C # 6
Rosdi Kasim

ฉันคิดว่าคุณพูดถูก ฉันสะดุดกับมันและสะดุดกับคำถามของคุณ โชคดีที่ลิงค์ถัดไปที่ฉันพบคือคำตอบ
DrewB

1
มี CSharpCodeProvider สากลสำหรับเป้าหมาย. NET ทั้งหมดหรือไม่
denfromufa

1
web.config ของฉันมีประเภทที่ถูกต้องและเวอร์ชันภาษาถูกตั้งค่าเป็นค่าเริ่มต้น<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />เพียงแค่ทำความสะอาดโซลูชันและการคอมไพล์ใหม่แก้ไขให้ฉันใน VS 2019
joym8

32

อัปเดตแพ็คเกจ NuGet ต่อไปนี้ (แล้วแต่ว่าจะติดตั้ง) เพื่อแก้ไขปัญหา:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

นี่เป็นความคิดเห็นมากกว่าคำตอบ
Al Lelopath

2
นี่คือทางออกที่แท้จริง !! ถอนการติดตั้งแพ็คเกจ nuget นี้และแก้ไขปัญหาให้ฉัน
Geomorillo

ฉันเปลี่ยนมาใช้ c # 6.0 แต่แพ็คเกจยังคงเป็นเวอร์ชันเก่ากว่า การอัปเดตจาก 1.0 เป็น 1.0.4 ใช้ได้ผลสำหรับฉัน
Mixxiphoid

7
@AlLelopath เพียงเพราะมันเป็นคำตอบเล็ก ๆ ไม่ได้ทำให้มันเป็นความคิดเห็น "ความคิดเห็น" เล็ก ๆ นี้ช่วยแก้ปัญหาให้ฉันและสำหรับคนอื่น ๆ ได้ดังนั้นควรเป็นคำตอบ
Shimmy Weitzhandler

สำหรับผู้ที่ต้องการ: "update-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform" และ "update-package Microsoft.Net.Compilers"
Theotonio

14

1. ไปที่โครงการและเลือกคุณสมบัติโครงการของคุณ

2 เลือกสร้างและคลิกปุ่มขั้นสูง

3. เลือกเวอร์ชันภาษาเริ่มต้น

4. บันทึก

https://youtu.be/IP8feQeWqkk


มีข้อผิดพลาดนี้ใน VS2013 วิธีนี้ใช้ไม่ได้ผลสำหรับฉันอย่างน่าเสียดาย
Jviaches

2
อันนี้ใช้ได้ผลสำหรับฉัน โซลูชันที่แนะนำอื่น ๆ ทั้งหมดเกี่ยวข้องกับการเปลี่ยนไฟล์ web.config หรืออีกทางหนึ่งคือดาวน์โหลดแพ็คเกจ / อัปเดต NuGet คอมไพเลอร์ยังคงแสดงข้อผิดพลาดเกี่ยวกับเวอร์ชันที่ไม่ถูกต้องซึ่งทำให้ฉันสับสนเนื่องจากฉันไม่มีการตั้งค่านั้นในไฟล์กำหนดค่า ปรากฎว่าคุณสมบัติการสร้างขั้นสูงไม่ได้รับการอัปเดตโดยอัตโนมัติจากการอัปเดตแพ็คเกจ NuGet
Kiran Ramaswamy

3

ฉันพบพฤติกรรมดังกล่าวหากโครงการไม่ได้อัปเกรดเป็น VS2015 อย่างสมบูรณ์ ในกรณีที่คุณเปิดโซลูชันตั้งแต่ปี 2015 ใน VS2013 - คุณจะได้รับข้อผิดพลาดนี้


ฉันด้วยฉันคิดว่าข้อผิดพลาดนี้โดยทั่วไปหมายความว่าคุณต้องติดตั้ง VS2015! มีคนอื่นในโครงการกำลังใช้คุณสมบัติภาษาใหม่ที่ 2013 ไม่สามารถรับมือได้
JonnyRaa


0

ดูคำตอบสำหรับข้อผิดพลาดในการรวบรวม ASP.NET ที่แปลก! .

การดาวน์เกรดภาษา C # ของคุณเป็น 5 เพียงการปกปิดปัญหาทันทีที่มีคนใช้คุณลักษณะ C # 6 เว็บไซต์ / โครงการของคุณจะพังและคุณจะยังคงใช้เวลาแก้ไขอีกครั้ง ลองวิธีแก้ไขในลิงค์


0

ฉันมีปัญหาคล้ายกันตอนที่กำลังโหลดแอปพลิเคชันเป็นครั้งแรกใน Visual Studio 2019 การอัปเดต "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" เป็นเวอร์ชันที่ใหม่กว่านั้นเป็นเคล็ดลับสำหรับฉัน

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