
Dimulai dengan Visual Studio 2019 Preview 4 dan RC, kami akan menyesuaikan bagaimana versi C # diperlakukan dalam .NET tooling. Baca lebih lanjut di bawah ini <potong>.
Ringkasan perubahan
Pertama, kami menambahkan dua nilai Versi Bahasa ( LangVersion ) baru: LatestMajor dan Pratinjau . Inilah cara mereka menumpuk dengan daftar nilai yang saat ini didukung:
Langversion | Berarti |
---|
TerbaruMajor | Versi bahasa C # utama terbaru yang didukung |
Pratinjau | Versi bahasa C # pratinjau terbaru yang tersedia |
Terbaru | Versi bahasa C # yang didukung terbaru (termasuk versi minor) |
ISO-1 | C # 1.0 / 1.2 |
ISO-2 | C # 2.0 |
3 | C # 3.0 |
4 | C # 4.0 |
5 | C # 5.0 |
6 | C # 6.0 |
7 | C # 7.0 |
7.1 | C # 7.1 |
7.2 | C # 7.2 |
7.3 | C # 7.3 |
8.0 | C # 8.0 |
Ketika tidak ada LangVersion yang ditentukan, makna default sekarang ditentukan oleh kerangka kerja target proyek Anda. Saat Anda menargetkan kerangka pratinjau yang juga memiliki versi pratinjau C # yang sesuai, versi pratinjau itu adalah default. Jika Anda tidak menargetkan kerangka pratinjau, maka Terbaru dipilih.
Pengalaman saat C # 8.0 dalam pratinjau
Skenario berikut menjelaskan bagaimana versi C # default akan ditafsirkan sementara C # 8.0 masih dalam pratinjau.
Menargetkan pratinjau netcoreapp3.0 atau pratinjau netstandard2.1
Versi bahasa default yang dipilih dalam skenario ini adalah Pratinjau . Fitur C # 8.0 yang Anda miliki aksesnya didasarkan sepenuhnya pada versi kompiler (dan dengan demikian .NET SDK) yang Anda gunakan. Saat Anda menggunakan pratinjau mendatang, Anda mungkin mendapatkan lebih banyak (atau sedikit tweak) fitur. Saat Anda membangun proyek, .NET SDK akan memancarkan peringatan bahwa ini semua masih dalam pratinjau.
Penargetan .NET Framework
Versi bahasa default yang dipilih dalam skenario ini adalah Terbaru . Setiap penggunaan fitur C # 8.0 adalah kesalahan kompilasi. Perkakas Visual Studio akan meminta Anda dengan perbaikan cepat yang dapat mengubah versi bahasa untuk proyek atau solusi ketika salah satu kesalahan ini ditemukan. Karena beberapa fitur memerlukan tipe yang mendasari atau fitur runtime yang tidak tersedia di .NET Framework, seperti Default Interface Member, Anda mungkin masih mendapatkan kesalahan untuk fitur-fitur tersebut ketika menargetkan .NET Framework.
Pratinjau multi-penargetan netcoreapp3.0 atau pratinjau netstandard2.1 dan .NET Framework
Untuk target pratinjau netcoreapp3.0 / netstandard2.1 , versi bahasa adalah Pratinjau . Peringatan dikeluarkan saat dibangun dari .NET SDK. Untuk target .NET Framework, versi bahasa adalah Terbaru .
LangVersion eksplisit digunakan
Jika Anda secara eksplisit menetapkan nilai LangVersion, itu akan dihormati dan perilaku default yang disebutkan sebelumnya diabaikan.
Pengalaman saat C # 8.0 dan .NET Core 3.0 adalah GA
Akhirnya, C # 8.0 dan .NET Core 3.0 akan dikirimkan dalam rilis berkualitas GA. Inilah yang akan dipetakan dengan nilai LangVersion yang relevan saat itu:
Langversion | Berarti |
---|
Terbaru | 8.0 |
TerbaruMajor | 8.0 |
Pratinjau | Belum ditentukan |
Proyek yang tidak menentukan LangVersion akan diperlakukan seolah-olah mereka terbaru ketika C # 8.0 adalah GA.
Jika Anda membuat proyek untuk pratinjau penargetan C # 8.0. Pratinjau .NET Core 3.0 atau pratinjau .NET Standard 2.1, dan juga tidak menentukan LangVersion, itu akan seolah-olah Terbaru dipilih. Anda tidak akan diikutkan ke Pratinjau dalam skenario apa pun setelah C # 8.0 dan .NET Core 3.0 adalah GA.
Pada saat penulisan, tidak ada rencana untuk pratinjau C # ketika C # 8.0 adalah GA. Akhirnya, pratinjau akan dikirimkan dan kami akan memiliki posting blog yang menjelaskannya.
Dasar pemikiran
Hingga saat ini, versi C # default yang digunakan dalam Visual Studio setara dengan LatestMajor . Ini bermasalah karena dua alasan:
- C # sekarang berevolusi di antara siklus rilis Visual Studio, tetapi proyek-proyek baru di Visual Studio masih default ke versi C # yang lebih lama.
- Pratinjau C # 8.0 adalah pilihan yang lebih baik untuk proyek yang menargetkan pratinjau .NET Core 3.0, tetapi tidak ada cara untuk menjadikannya default tanpa juga menjadikannya default untuk proyek yang tidak menargetkan pratinjau .NET Core 3.0.
Lebih umum, karena kami mengembangkan C # dan terus merilis lebih banyak fitur yang selaras dengan versi .NET Core di masa depan, kami ingin memastikan bahwa Anda dapat menggunakan fitur ini semulus mungkin. Ini juga memungkinkan Anda untuk menggunakan fitur lebih awal dalam siklus pengembangannya, meningkatkan waktu yang memungkinkan umpan balik yang dapat ditindaklanjuti pada suatu fitur dapat memengaruhi desainnya.
Dukungan dan kompatibilitas untuk fitur pratinjau
Cara berpikir tentang dukungan juga sedikit berbeda. Untuk memungkinkan penggunaan fitur pratinjau C # 8.0 dalam Visual Studio 2019 yang dirilis, masalah dukungan dan kompatibilitas dibedakan berdasarkan pratinjau vs. fitur yang dirilis:
- C # 7.3 dan fitur atau perilaku yang lebih rendah didukung sepenuhnya dan sepenuhnya kompatibel. Tidak ada perubahan dari apa yang ada saat ini.
- Fitur pratinjau C # 8.0 apa pun tidak didukung.
- Tidak ada jaminan kompatibilitas dari satu pratinjau C # 8.0 ke pratinjau lainnya.
Singkatnya, jika Anda menggunakan pratinjau C # 8.0 di Visual Studio 2019, beberapa fitur dan perilaku dapat berubah antara sekarang dan ketika C # 8.0 sepenuhnya dirilis.
Selamat melakukan peretasan!