Điều này có được hỗ trợ không?
Nếu vậy, có một số mẹo để kích hoạt nó không? Tôi giả sử Razor không sử dụng trình biên dịch mới đủ ...? VS2015 IDE có vẻ ổn với nó nhưng trong thời gian chạy, tôi nhận được
CS1056: Ký tự không mong muốn '$'
Điều này có được hỗ trợ không?
Nếu vậy, có một số mẹo để kích hoạt nó không? Tôi giả sử Razor không sử dụng trình biên dịch mới đủ ...? VS2015 IDE có vẻ ổn với nó nhưng trong thời gian chạy, tôi nhận được
CS1056: Ký tự không mong muốn '$'
Câu trả lời:
Cập nhật :
Bắt đầu từ Visual Studio 2015 Update 1, có một quy trình đơn giản trong GUI để thực hiện các bước bên dưới cho bạn. Chỉ cần nhấp chuột phải vào dự án web của bạn và chọn "Bật C # 6 / VB 14". Thông tin thêm có sẵn trên bài đăng trên blog MSDN, " Tính năng mới để kích hoạt C # 6 / VB 14 ".
Kể từ khi câu trả lời này được viết, chức năng này đã được thêm vào với sự hỗ trợ của gói NuGet.
Thêm gói Nuget này vào giải pháp của bạn nếu bạn đang sử dụng MVC5.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Gói nuget sẽ sửa đổi web.config của bạn, nhưng hãy kiểm tra xem cấu hình sau có trong tệp web.config của bạn không (và nếu nó không được thêm vào):
<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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
Trong MVC6, điều này được tích hợp sẵn.
Câu trả lời ban đầu:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
Điều này chỉ hoạt động trong C # 6 với MVC6. Ngay cả khi bạn đang chạy MVC5 với trình biên dịch C # 6, nó sẽ không hoạt động.
Bí quyết là trình phân tích cú pháp dao cạo chưa đủ thông minh để nhận ra một số cú pháp, vì vậy bạn phải đặt toàn bộ trong dấu ngoặc đơn (bạn cũng phải làm điều này khi sử dụng toán tử điều kiện null ( ?.
) trong các khung nhìn dao cạo của bạn).
Điều đó nói rằng, nội suy chuỗi trong Razor hiện có một chút lỗi trong MVC6, vì vậy tôi sẽ không ngạc nhiên nếu có một số vấn đề với nó. liệu chúng có được giải quyết hay không là một vấn đề khác.
Chạy lệnh sau trong Bảng điều khiển Trình quản lý Gói để thêm CodeDom
nhà cung cấp bắt buộc vào dự án của bạn. Nó sẽ web.config
tự động sửa đổi tệp của bạn để thêm CodeDom
các cài đặt cần thiết cho nó.
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Khởi động lại Visual Studio
Lưu ý: Như @Jake đã đề cập trong bình luận của anh ấy dưới câu trả lời này, nếu bạn đã có DotNetCompilerPlatform
gói thì có thể chỉ cần cập nhật.
Replacement CodeDOM providers that use the new .NET Compiler Platform ("Roslyn") compiler as a service APIs. This provides support for new language features in systems using CodeDOM (e.g. ASP.NET runtime compilation) as well as improving the compilation performance of these systems.