Lỗi Tùy chọn không hợp lệ '6' cho / langversion; phải là ISO-1, ISO-2, 3, 4, 5 hoặc Mặc định


90

Tôi đang cố gắng nhắm mục tiêu .NET 4.6 và cũng tận dụng lợi thế của phiên bản C # mới nhất bằng cách thay đổi phiên bản ngôn ngữ C # thành 6.

Tuy nhiên trong quá trình biên dịch, tôi gặp lỗi này:

Lỗi Tùy chọn không hợp lệ '6' cho / langversion; phải là ISO-1, ISO-2, 3, 4, 5 hoặc Mặc định

Nếu tôi cập nhật /langversion:6cài đặt trong Web.Config thành 5 thì nó hoạt động,

  <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">

Nhưng làm cách nào để giải quyết vấn đề này mà không cần dùng đến phiên bản ngôn ngữ thấp hơn?

Tôi đang sử dụng Visual Studio 2015 Community Edition và tôi cũng đã cài đặt .NET Framework 4.6 theo cách thủ công đề phòng trường hợp Visual Studio 2015 không được cài đặt theo mặc định.

Dự án là một dự án mẫu ASP.NET MVC tiêu chuẩn được tạo bởi Visual Studio 2015.


1
Trong trường hợp của tôi, tôi chỉ có để loại bỏ /langversion:6...
bohdan_trotsenko

@modosansreves Điều đó sẽ hoàn nguyên về phiên bản ngôn ngữ mặc định .. tôi tin là C # 5 ... vui lòng kiểm tra xem bạn có thể sử dụng bất kỳ tính năng ngôn ngữ C # 6 nào không.
Rosdi Kasim

Thật. Điều này làm mất đi việc sử dụng các tính năng của C # 6. Cảm ơn.
bohdan_trotenko

Câu trả lời:


89

Chú ý đến "loại" trình biên dịch trong Web.Configtệp, khi thay đổi phiên bản Framework:

cho 4,5 và C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

cho 4,6 và C # 6 -

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

Thông tin thêm trong bài đăng diễn đàn này


20
! Công trình này .. Mặc dù tôi xem xét nó như là một lỗi trong Visual Studio 2015 vì đã không cập nhật này tự động khi tôi lại nhắm mục tiêu ứng dụng của tôi để .NET 4.6 và C # 6.
Rosdi Kasim

Tôi nghĩ rằng bạn đúng trong đó. Tôi đã rất đau đầu với nó và tình cờ gặp câu hỏi của bạn. May mắn thay, liên kết tiếp theo tôi tìm thấy là câu trả lời.
DrewB

1
Có CSharpCodeProvider chung cho tất cả các mục tiêu .NET không?
denfromufa

1
Web.config của tôi có loại chính xác và phiên bản ngôn ngữ được đặt thành mặc định <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" />Chỉ cần làm sạch giải pháp và biên dịch lại đã sửa nó cho tôi vào VS 2019.
joym8 Ngày

31

Cập nhật các gói NuGet sau (bất kỳ gói nào được cài đặt) để giải quyết sự cố:

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

đây là chi tiết của một bình luận hơn là một câu trả lời
Al Lelopath

2
Đây là giải pháp thực sự !! Gỡ cài đặt gói
nuget

Tôi đã chuyển sang c # 6.0, nhưng gói vẫn ở phiên bản cũ hơn. Cập nhật từ 1.0 lên 1.0.4 phù hợp với tôi.
Mixxiphoid

7
@AlLelopath chỉ vì đó là một câu trả lời nhỏ không khiến nó trở thành một bình luận. "Nhận xét" nhỏ bé này đã giải quyết vấn đề cho tôi và cho những người khác, vì vậy tốt hơn hết hãy giữ nguyên như một câu trả lời.
Shimmy Weitzhandler

14

1. Đi tới Dự án và chọn thuộc tính Dự án của bạn.

2 Chọn Xây dựng và Nhấp vào Nút Nâng cao.

3. chọn phiên bản ngôn ngữ mặc định.

4. lưu.

https://youtu.be/IP8feQeWqkk


Đã gặp lỗi này trong VS2013. Thật không may, giải pháp này đã không làm việc cho tôi.
Jviaches

2
Điều này đã làm việc cho tôi. Tất cả các giải pháp được đề xuất khác đều xoay quanh việc thay đổi tệp web.config hoặc cách khác, tải xuống các gói / bản cập nhật NuGet. Trình biên dịch liên tục gặp lỗi về một phiên bản không hợp lệ, điều này khiến tôi bối rối vì tôi không có cài đặt đó trong tệp cấu hình. Hóa ra các thuộc tính xây dựng nâng cao không được cập nhật tự động bởi bản cập nhật gói NuGet.
Kiran Ramaswamy

3

Tôi đã gặp hành vi như vậy nếu dự án không được nâng cấp hoàn toàn lên VS2015. Trong trường hợp nếu bạn mở giải pháp từ 2015 trong VS2013 - bạn sẽ gặp lỗi này


Tôi cũng vậy, tôi nghĩ về cơ bản lỗi này có nghĩa là bạn cần cài đặt VS2015! Một người nào khác về dự án đang sử dụng các tính năng ngôn ngữ mới mà năm 2013 không thể đối phó với
JonnyRaa

2

Mở bảng điều khiển NuGet Package Manager và chạy lệnh sau

Gói Cập nhật Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


0

Xem câu trả lời cho lỗi biên dịch lạ ASP.NET! .

Hạ cấp ngôn ngữ C # của bạn xuống 5 chỉ che giấu vấn đề, ngay khi ai đó sử dụng tính năng C # 6, trang web / dự án của bạn sẽ bị hỏng và bạn vẫn sẽ tốn thời gian sửa lại. Hãy thử giải pháp trong liên kết.


0

Tôi đã gặp sự cố tương tự khi tải ứng dụng lần đầu tiên trong visual studio 2019. Cập nhật "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" lên phiên bản mới hơn đã giải quyết vấn đề cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.