Memperbarui jenis proyek situs Web yang sudah ada Visual Studio 2015, saya mengubah kerangka kerja menjadi 4.6.
Saya kemudian berharap memiliki semua fitur baru yang tersedia dalam kode saya di belakang file.
Sayangnya saya mendapatkan kesalahan seperti:
Kesalahan CS8026: Fitur 'properti bertubuh ekspresi' tidak tersedia di C # 5. Harap gunakan bahasa versi 6 atau lebih tinggi.
atau misalnya:
Kesalahan CS8026: Fitur 'string interpolasi' tidak tersedia di C # 5. Harap gunakan bahasa versi 6 atau lebih tinggi.
Saya melakukan pemeriksaan Google dengan cepat dan menemukan seorang pria memposting beberapa komentar di posting blog ScottGu (cari "8026" di halaman).
Karena saya tidak mengerti solusinya, ditambah saya ingin solusi lebih terlihat, saya telah membuat posting SO ini.
Pertanyaan saya:
Bagaimana saya bisa memiliki proyek Visual Studio 2015 jenis Situs Web (yaitu bukan Aplikasi Web ) untuk mengenali fitur C # 6?
sumber
Jawaban:
Saya telah menguji ini dengan ASP.NET MVC 5 (diuji 5.2.3), dan jarak tempuh Anda mungkin berbeda dengan kerangka kerja web lain, tetapi Anda hanya perlu menambahkan Roslyn CodeDOM | Paket NuGet
Penyedia CodeDOM untuk .NET Compiler ...
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Paket NuGet harus menambahkan file DLL dan menambahkan berikut ini ke web.config Anda.
Jika masih hilang. Coba tambahkan diri Anda.
sumber
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
dan ketergantungannyaMicrosoft.Net.Compilers
Lihat juga entri blog dari Sayed Ibrahim Hashimi ini tentang cara melakukan ini melalui VS IDE.
Memperbarui.
VS 2017 dan 2019 memiliki fitur ini dipindahkan ke Build -> ASP.NET Compilation .
sumber
Saya menginstal DotNetCompilerPlatform seperti yang disarankan @jbtule, tetapi masih mendapatkan kesalahan yang sama.
Saya menutup solusi, menghapus folder bin dan obj, kemudian membuka solusi dan membangun kembali. Sekarang fitur C # 6 berfungsi.
sumber
Install-Package ...
). Juga menargetkan 4.6.bin
danobj
.Solusi yang memungkinkan, diambil dari komentar di posting blog ScottGu (cari "8026" di halaman):
Saran solusi 1 (David Taylor)
Tambahkan elemen dom kode RTM ini ke web.config:
Kemudian tambahkan hal-hal Roslyn dan Microsoft.CodeDom.Providers. *. Dll ke dalam direktori BIN Anda.
Ini cukup mudah untuk mengatur, tetapi aneh bagi saya bahwa template default tidak diatur untuk itu jika Anda memilih .NET 4.6 saat membuat "Situs Web" baru di VS 2015 RTM.
Saran solusi 2 (Martin)
Lebih jauh dari komentar David Taylor di atas, sepertinya pengaturan system.codedom sudah benar ketika Aplikasi Web dibuat dengan TargetFramework sebagai v4.5.2 default. Mengubah TargetFramework ke v4.6 tampaknya mengubah pengaturan kompilator untuk CSharp, dengan cara yang menyebabkan masalah.
Solusi saya adalah sebagai berikut:
Halaman Beranda harus dimuat seperti yang diharapkan.
Untuk info, isi system.codedom segera setelah mengubah TargetFramework ke v4.6. adalah sebagai berikut (perhatikan penggunaan Type "Microsoft.CSharp.CSharpCodeProvider"):
sumber
Microsoft.CSharp.CSharpCodeProvider
versi 4.0 berarti tidak menggunakan Rosyln, Jadi tidak akan berfungsi untuk C # 6.0.<LangVersion>
dalamcsproj
berkas sama dengan6
. Ini dapat menyebabkan masalah jika itu adalah hal lain.Ini bukan untuk Proyek Situs Web . Ini adalah bagaimana Anda melakukannya untuk proyek ASP.NET MVC.
Anda dapat mengaktifkan C # 6 di UI Visual Studio. Ini adalah opsi yang mudah, patut dicoba terlebih dahulu.
sumber
<% Eval(whatever) %>
.Inilah tampilannya di VS2017 dengan proyek situs web:
sumber
Saya menerima kesalahan ini setelah melakukan NOL perubahan pada proyek WebAPI saya. Saya menghapus paket nuget DotNetCompilerPlatform dan menginstal ulang, yang memperbaiki masalah.
sumber