Saat menggunakan Visual Studio Enterprise 16.3.7
pada dua mesin terpisah, satu build baik-baik saja dan mesin lainnya melempar kesalahan:
Fitur 'menggunakan deklarasi' tidak tersedia di C # 7.3. Silakan gunakan versi bahasa 8.0 atau lebih tinggi.
Hal ini dapat dengan mudah dipecahkan pada mesin bekerja tidak dengan menetapkan LangVersion
dalam .csproj
seperti yang disarankan di sini https://stackoverflow.com/a/48085575/3850405 atau membiarkan Visual Studio secara otomatis memperbaikinya seperti print screen di atas.
<LangVersion>8.0</LangVersion>
Apa yang saya tidak mengerti adalah mengapa satu mesin dapat bekerja dengan baik tanpa saluran ini .csproj
dan mesin lainnya membutuhkannya?
dotnet --list-sdks
ditunjukkan?.NET Framework 4.6.1
danLangVersion
tidak disetel.Jawaban:
Saya menerima kesalahan yang sama, tetapi saya lupa memasukkan
atribut dalam SEMUA file .csproj dalam solusi. Berikut ini adalah pengaturan c # 8 saya saat ini:
Saya menemukan dokumen-dokumen berikut ini yang paling membantu ketika bermigrasi dari inti 2.2 ke 3.x:
MSDN 2.2 -> 3.0
MSDN 3.0 -> 3.1
sumber
<LangVersion>latest</LangVersion>
sebagai gantinya<LangVersion>8.0</LangVersion>
MSDN 2.2 -> 3.0
dimaksudkan untuk tautan ke yang berikut: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 Saya sudah mencoba mengedit jawaban untuk mengubahnya, tetapi "menyarankan mengedit antrian sudah penuh ", sebagai gantinya akan dikirim ke sini.Saya harus memperbarui Visual Studio ke versi dari 16.3.X ke 16.4.2. Ini menyelesaikan masalah dan saya tidak perlu menambahkan LangVersion.
Kredit: https://github.com/aspnet/AspNetCore.Docs/issues/16047
sumber
Ini bisa jadi karena kompiler menggunakan versi bahasa C # yang berbeda untuk Kerangka Target yang berbeda.
Untuk mengganti bahasa C # default, tambahkan ke file proyek (seperti yang disarankan dalam pertanyaan):
atau:
Lihat versi bahasa C # untuk versi bahasa C # default untuk kerangka kerja target yang berbeda dan cara memilih versi bahasa C # secara manual.
Lihat juga jawaban stack overflow Apakah C # 8 mendukung .NET Framework? untuk informasi lebih lanjut tentang topik ini.
Ini adalah bagian dari artikel versi bahasa C # :
Versi bahasa C #
Kompiler C # terbaru menentukan versi bahasa default berdasarkan kerangka kerja atau kerangka kerja target proyek Anda. Ini karena bahasa C # mungkin memiliki fitur yang bergantung pada tipe atau komponen runtime yang tidak tersedia di setiap implementasi .NET. Ini juga memastikan bahwa untuk target apa pun proyek Anda dibangun melawan, Anda mendapatkan versi bahasa yang kompatibel tertinggi secara default.
Aturan dalam artikel ini berlaku untuk kompiler yang dikirim dengan Visual Studio 2019 atau .NET Core 3.0 SDK. Kompiler C # yang merupakan bagian dari instalasi Visual Studio 2017 atau versi .NET Core SDK sebelumnya menargetkan C # 7.0 secara default.
Default
Kompiler menentukan default berdasarkan aturan-aturan ini:
Timpa default
Jika Anda harus menentukan versi C # secara eksplisit, Anda dapat melakukannya dengan beberapa cara:
Edit file proyek
Anda dapat mengatur versi bahasa di file proyek Anda. Misalnya, jika Anda secara eksplisit ingin akses ke fitur pratinjau, tambahkan elemen seperti ini:
Nilai
preview
menggunakan versi bahasa C # pratinjau terbaru yang tersedia yang didukung oleh kompiler Anda.Konfigurasikan banyak proyek
Untuk mengkonfigurasi beberapa proyek, Anda bisa membuat file Directory.Build.props yang berisi
<LangVersion>
elemen. Anda biasanya melakukannya di direktori solusi Anda. Tambahkan berikut ini ke file Directory.Build.props di direktori solusi Anda:Sekarang, membangun di setiap subdirektori dari direktori yang berisi file itu akan menggunakan versi pratinjau C #. Untuk informasi lebih lanjut, lihat artikel tentang Kustomisasi bangunan Anda .
sumber
Saya mengunduh versi terbaru .Net Core 3.0 dan 3.1 dan memiliki masalah yang sama. Bagi saya, perbaikannya sepertinya mengunduh pembaruan terbaru untuk Visual Studio 2019 (ke versi 16.4.2).
Ini juga me-restart komputer saya dan kesalahan hilang.
sumber