Kesalahan Opsi '6' tidak valid untuk / langversion; harus ISO-1, ISO-2, 3, 4, 5 atau Default

90

Saya mencoba menargetkan .NET 4.6 dan juga memanfaatkan versi C # terbaru dengan mengubah versi bahasa C # menjadi 6.

Namun selama kompilasi saya mendapat kesalahan ini:

Kesalahan Opsi '6' tidak valid untuk / langversion; harus ISO-1, ISO-2, 3, 4, 5 atau Default

Jika saya memperbarui pengaturan /langversion:6di Web.Config ke 5, ini berfungsi,

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">

Tetapi bagaimana cara mengatasi ini tanpa menggunakan versi bahasa yang lebih rendah?

Saya menggunakan Visual Studio 2015 Community Edition, dan saya juga telah menginstal .NETFramework 4.6 secara manual jika tidak diinstal secara default oleh Visual Studio 2015.

Proyek ini adalah proyek template ASP.NET MVC standar yang dibuat oleh Visual Studio 2015.

Rosdi Kasim
sumber
1
Dalam kasus saya, saya hanya perlu menghapus /langversion:6...
bohdan_trotsenko
@modosansreves Itu akan kembali ke versi bahasa default .. yaitu C # 5 Saya percaya ... silakan periksa apakah Anda dapat menggunakan salah satu fitur bahasa C # 6.
Rosdi Kasim
Memang. Ini menghalangi penggunaan fitur C # 6. Terima kasih.
bohdan_trotsenko

Jawaban:

89

Perhatikan compiler "type" di Web.Configfile tersebut, saat mengubah versi Framework:

untuk 4.5 dan C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

untuk 4.6 dan C # 6 -

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

Info lebih lanjut di posting forum ini

DrewB
sumber
20
Ini berfungsi! .. Meskipun saya menganggapnya sebagai bug di Visual Studio 2015 karena tidak memperbarui ini secara otomatis ketika saya menargetkan ulang aplikasi saya ke .NET 4.6 dan C # 6.
Rosdi Kasim
Saya pikir Anda benar dalam hal itu. Saya tersengat olehnya dan menemukan pertanyaan Anda. Untungnya tautan berikutnya yang saya temukan adalah jawabannya.
DrewB
1
Apakah ada CSharpCodeProvider universal untuk semua target NET.?
denfromufa
1
Web.config saya memiliki jenis yang benar dan versi bahasa disetel ke default. <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />Hanya membersihkan solusi dan mengkompilasi ulang memperbaikinya untuk saya di VS 2019.
joym8
31

Perbarui paket NuGet berikut (mana saja yang diinstal) untuk menyelesaikan masalah:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers
Pengembang
sumber
ini lebih merupakan komentar daripada jawaban
Al Lelopath
2
Ini adalah solusi nyata !! Copot pemasangan paket nuget ini dan masalah terpecahkan untuk saya
Geomorillo
Saya beralih ke c # 6.0, tetapi paketnya masih dalam versi yang lebih lama. Memperbarui dari 1.0 ke 1.0.4 berhasil untuk saya.
Mixxiphoid
7
@AlLelopath hanya karena itu jawaban kecil tidak membuatnya menjadi komentar. "Komentar" kecil ini memecahkan masalah bagi saya dan orang lain, jadi lebih baik tetap sebagai jawaban.
Shimmy Weitzhandler
14

1. Buka Proyek dan pilih properti Proyek Anda.

2 Pilih Bangun dan Klik Tombol Lanjutan.

3. Pilih default Versi Bahasa.

4. Simpan.

https://youtu.be/IP8feQeWqkk

Vishwakarma Prashant
sumber
Memiliki kesalahan ini di VS2013. Sayangnya, solusi ini tidak berhasil untuk saya.
Jviaches
2
Yang ini berhasil untuk saya. Semua solusi lain yang disarankan berkisar pada mengubah file web.config, atau sebagai alternatif, mengunduh paket / pembaruan NuGet. Kompilator terus memberikan kesalahan tentang versi yang tidak valid, yang membuat saya bingung karena saya tidak memiliki pengaturan itu di file konfigurasi. Ternyata properti build lanjutan tidak secara otomatis diperbarui oleh pembaruan paket NuGet.
Kiran Ramaswamy
3

Saya menemui perilaku seperti itu jika proyek tidak sepenuhnya ditingkatkan ke VS2015. Jika Anda membuka solusi dari 2015 di VS2013 - Anda akan mendapatkan kesalahan ini

Sergii Lischuk
sumber
Saya juga, saya pikir kesalahan ini pada dasarnya berarti Anda perlu menginstal VS2015! Orang lain dalam proyek ini menggunakan fitur bahasa yang lebih baru yang tidak dapat diatasi pada tahun 2013
JonnyRaa
2

Buka konsol NuGet Package Manager dan jalankan perintah berikut ini

Perbarui-Paket Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

Mahfuj Ur Rahman
sumber
0

Lihat jawaban untuk kesalahan kompilasi aneh ASP.NET! .

Menurunkan bahasa C # Anda menjadi 5 hanya menutupi masalah, segera setelah seseorang menggunakan fitur C # 6, situs web / proyek Anda akan rusak dan Anda masih akan menghabiskan waktu untuk memperbaikinya lagi. Coba solusi di tautan.

PBo
sumber
0

Saya mengalami masalah serupa ketika saya memuat aplikasi untuk pertama kalinya di visual studio 2019. Memperbarui nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" ke versi yang lebih baru melakukan trik untuk saya.

Govind
sumber