Apakah ini didukung?
Jika ya, apakah ada trik untuk mengaktifkannya? Saya berasumsi Razor tidak menggunakan kompiler yang cukup baru ...? VS2015 IDE tampaknya baik-baik saja dengan itu tetapi pada saat runtime saya dapatkan
CS1056: Karakter tak terduga '$'
c#
asp.net-mvc
razor
c#-6.0
Tim Schmidt
sumber
sumber
Jawaban:
Pembaruan :
Mulai Visual Studio 2015 Pembaruan 1, ada proses sederhana di GUI untuk melakukan langkah-langkah di bawah ini untuk Anda. Cukup klik kanan proyek web Anda dan pilih "Aktifkan C # 6 / VB 14". Informasi lebih lanjut tersedia di entri blog MSDN, " Fitur baru untuk mengaktifkan C # 6 / VB 14 ".
Sejak jawaban ini ditulis, fungsi ini telah ditambahkan dengan bantuan paket NuGet.
Tambahkan paket Nuget ini ke solusi Anda jika Anda menggunakan MVC5.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Paket nuget harus memodifikasi web.config Anda, tetapi periksa apakah konfigurasi berikut ada di file web.config Anda (dan jika tidak ditambahkan):
Di MVC6, ini sudah built-in.
Jawaban asli:
Ini hanya bekerja di C # 6 dengan MVC6. Bahkan jika Anda menjalankan MVC5 dengan kompiler C # 6, itu tidak akan berhasil.
Triknya adalah parser pisau cukur belum cukup pintar untuk mengenali beberapa sintaksis, jadi Anda harus membungkus semuanya dalam tanda kurung (Anda harus melakukan ini saat menggunakan operator bersyarat null (
?.
) dalam tampilan pisau cukur Anda juga).Meskipun demikian , interpolasi string di Razor saat ini agak bermasalah di MVC6, jadi saya tidak akan terkejut jika ada beberapa masalah dengannya. apakah mereka akan ditangani atau tidak adalah masalah lain.
sumber
Jalankan perintah berikut di Package Manager Console untuk menambahkan
CodeDom
penyedia yang diperlukan ke proyek Anda. Ini akan mengubahweb.config
file Anda secara otomatis untuk menambahkanCodeDom
pengaturan yang diperlukan ke dalamnya.Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Mengulang kembali
Visual Studio
Catatan: Seperti yang disebutkan @Jake dalam komentarnya di bawah jawaban ini, jika Anda sudah memiliki
DotNetCompilerPlatform
paketnya, mungkin hanya perlu diperbarui.sumber
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.