Tôi đã tìm các câu hỏi khác liên quan đến điều này, nhưng dường như không có gì là tôi đang tìm kiếm.Sử dụng tính năng C# 7 bên trong Chế độ xem trong dự án ASP.NET MVC Core
Tôi có một trang web đang chạy trên ASP.NET Core với cấu trúc dự án mới trong VS2017. Các tệp mã sử dụng tính năng C# 7 biên dịch tốt. Nhưng cố gắng sử dụng các tính năng đó trong Chế độ xem sẽ dẫn đến một loạt lỗi về cú pháp. Tôi đã thử cài đặt Roslyn để làm cho nó được sử dụng khi biên dịch các khung nhìn từ những gì tôi có thể nói với các tính năng C# 7 có sẵn trong gói nen Roslyn 2.x và cao hơn. Nhưng bây giờ tôi nhận được phản hồi rõ ràng nói rằng
lỗi CS8059: Tính năng 'khai báo biến' không có sẵn trong C# 6. Vui lòng sử dụng phiên bản ngôn ngữ 7 trở lên.
Trong quá khứ tôi sẽ kiểm tra web.config, nhưng không có web.config trong dự án ASP.NET Core khác với dự án gần trống ở gốc để xử lý yêu cầu tắt từ IIS.
Làm cách nào để cho biết rằng Chế độ xem của tôi sẽ được biên dịch với Roslyn vì không được thực hiện cho đến khi chạy? Ít nhất tôi giả định rằng sẽ khắc phục vấn đề của tôi vào thời điểm này.
Chỉnh sửa: Câu hỏi đó không trùng lặp điều này, như tôi đã đề cập lúc đầu, tôi cũng đã tìm câu hỏi hiện có. Điều đó đặc biệt cho phép các tính năng C# 7 trong ứng dụng của bạn tại thời gian biên dịch và chỉ cho một ứng dụng ASP.NET. Tôi đang sử dụng ASP.NET Core, mà không có một web.config với bất kỳ thiết lập biên dịch được định nghĩa trong nó. Ngoài ra, những gì tôi đang cố gắng để làm điều đó cho các lần xem được biên dịch trong thời gian chạy và có thể được trên một hệ thống khác nhau.
Giải pháp:
Đối với bất cứ ai quan tâm, Bạn cần phải thêm Roslyn để dự án của bạn (mà tôi biết), nhưng bạn cũng phải cấu hình RazorViewEngineOptions
sử dụng mà chỉ ra các phiên bản ngôn ngữ (mặc định là 6). Tôi đã làm điều này nhưng tôi đã không làm điều đó một cách chính xác. Tôi cần phải chỉ định kết quả của WithLanguageVersion()
mặt sau của ParseOptions
để thay thế chúng.
services.AddMvc().AddRazorOptions(options => options.ParseOptions = options.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));
có thể trùng lặp của [Kích hoạt C# 7 trong một ứng dụng asp.net] (http://stackoverflow.com/ câu hỏi/42744689/cho phép-c-sharp-7-trong-a-asp-net-ứng dụng) – uTeisT
Không phải là một bản sao, thêm chi tiết tại sao. –
Thông báo lỗi bạn nhận được cho biết trình biên dịch đã được nâng cấp đúng cách (cú pháp mới đã được nhận dạng). Phải có một cài đặt/langversion ở đâu đó điều khiển điều này trong ASP.Net Core, nhưng tôi không biết nó ở đâu. Lấy làm tiếc. –