Rất nhiều câu trả lời ở đây đã được viết trước khi Roslyn (trình biên dịch .NET C # và VB mã nguồn mở) chuyển sang .NET 4.6. Vì vậy, họ sẽ không giúp bạn nếu mục tiêu dự án của bạn, giả sử, 4.5.2 như của tôi đã làm (kế thừa và không thể thay đổi).
Nhưng bạn có thể lấy phiên bản trước của Roslyn từ https://www.nuget.org/packages/Microsoft.Net.Compilers và cài đặt phiên bản đó thay vì phiên bản mới nhất. Tôi đã sử dụng 1.3.2. (Tôi đã thử 2.0.1 - dường như là phiên bản cuối cùng chạy trên .NET 4.5 - nhưng tôi không thể biên dịch nó *.) Chạy nó từ bảng điều khiển Trình quản lý gói trong VS 2013:
PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2
Sau đó khởi động lại Visual Studio. Tôi đã có một vài vấn đề ban đầu; bạn cần đặt phiên bản C # trở về mặc định (C # 6.0 không xuất hiện trong danh sách phiên bản nhưng dường như đã được đặt mặc định), sau đó xóa, lưu, khởi động lại VS và biên dịch lại.
Thật thú vị, tôi không có bất kỳ lỗi IntelliSense nào do các tính năng C # 6.0 được sử dụng trong mã (đó là lý do muốn có C # 6.0 ở vị trí đầu tiên).
* phiên bản 2.0.1 đã ném lỗi "Không thể tải tác vụ" Microsoft.CodeAnalysis.BuildT task.Csc từ tập hợp Microsoft.Build.T nhiệm.CodeAnalysis.dll. Không thể tải tệp hoặc lắp ráp 'Microsoft.Build.Utilities.Core, Phiên bản = 14.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định. Xác nhận rằng khai báo là chính xác, rằng hội đồng và tất cả các phụ thuộc của nó đều khả dụng và tác vụ có chứa một lớp công khai thực hiện Microsoft.Build.Framework.ITask.
CẬP NHẬT Một điều tôi nhận thấy kể từ khi đăng câu trả lời này là nếu bạn thay đổi bất kỳ mã nào trong quá trình gỡ lỗi ("Chỉnh sửa và tiếp tục"), bạn sẽ thấy rằng mã C # 6.0 của bạn sẽ đột nhiên hiển thị là lỗi trong những gì dường như trở lại môi trường tiền C # 6.0. Điều này đòi hỏi phải khởi động lại phiên gỡ lỗi của bạn. RẤT khó chịu đặc biệt là cho các ứng dụng web.