Versi C # mana yang saya gunakan

191

Saya ingin mengetahui versi C # yang saya gunakan. Jika saya akan menggunakan python saya akan melakukan sesuatu seperti python -Vdari baris perintah, atau ketik:

import sys
print sys.version

Dalam PHP saya akan melakukan sesuatu seperti ini: phpinfo();di java:java -version

Tetapi saya tidak dapat menemukan cara untuk mencapai ini di C #.

Pertanyaan ini tidak menjawabnya, meskipun namanya menyarankan bahwa itu seharusnya.

Saya mengerti bahwa itu tergantung pada kerangka .NET, tetapi apakah ada cara terprogram untuk mengetahui kerangka kerja saya? Maksud saya tanpa pergi ke direktori dan memeriksa nama folder .NET saya.

Salvador Dali
sumber
5
Ini adalah pertanyaan teratas John Skeet
Avi Turner
5
di Visual Studio: Project Properties> Build> Lanjutan ...> Versi Bahasa: codeproject.com/Tips/865579/...
Slai

Jawaban:

66

Untuk mendapatkan versi kerangka kerja - lihat versi salah satu Majelis utama yaitu

 Console.Write(typeof(string).Assembly.ImageRuntimeVersion);

Mendapatkan versi kompiler C # agak sulit, tetapi Anda harus bisa menebak versi dengan memeriksa versi kerangka apa yang digunakan.

Jika Anda menggunakan kompiler baris perintah (csc.exe), Anda dapat memeriksa bantuan untuk melihat versi (Anda juga harus tahu versi Kerangka:

C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /?
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Alexei Levenkov
sumber
22
Sayangnya Assembly.ImageRuntimeVersion tidak memberi tahu Anda nomor versi yang tepat - pada PC saya, .NET 4.6 RC diinstal tetapi Assembly.ImageRuntimeVersion melaporkan v4.0.30319
Matt
1
Kecuali Anda menggunakan C # 6 yang tidak melihat versi .NET.
Michael Puckett II
2
RE: Komentar Matt: Hanya karena Anda memiliki satu versi .NET yang diinstal pada PC Anda, itu tidak berarti itu versi yang digunakan dalam proyek Anda
LoJo
@ Loo - Anda benar sekali. Salah satu alasannya adalah bahwa Visual Studio memungkinkan multi-penargetan (yaitu Anda dapat memilih versi .NET Framework Framework di properti proyek), alasan lainnya adalah bahwa versi Roslyn yang lebih baru perlu ditambahkan melalui NUGET ke proyek Anda. Ketiga, seperti yang saya tulis di sini , csc.exe terbatas pada versi 5.0 dan tidak dapat digunakan untuk mendeteksi versi C # yang lebih tinggi.
Matt
3
Belum ada yang menyebutkan bahwa instruksi yang benar untuk mendapatkan daftar versi yang didukung oleh kompiler Roslyn Anda adalah "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Komunitas \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe" / langversion :?
David A. Gray
235

Itu tergantung pada .NET Frameworkyang Anda gunakan. Periksa jawaban Jon Skeet tentang Versi.

Inilah versi singkat dari jawabannya.

C # 1.0 dirilis dengan .NET 1.0

C # 1.2 (cukup aneh); dirilis dengan .NET 1.1

C # 2.0 dirilis dengan .NET 2.0

C # 3.0 dirilis dengan .NET 3.5

C # 4.0 dirilis dengan .NET 4

C # 5.0 dirilis dengan .NET 4.5

C # 6.0 dirilis dengan .NET 4.6

C # 7.0 dirilis dengan .NET 4.6.2

C # 7.3 dirilis dengan .NET 4.7.2

C # 8.0 dirilis dengan NET Core 3.0

Praveen
sumber
4
Hanya kepala; C # 6 menggunakan kompiler yang berbeda (Roslyn) dan akan mengkompilasi kode sumber ke versi .NET lainnya tidak hanya .NET 4.6.
Michael Puckett II
12
Tetapi Anda dapat mengkompilasi .NET 2.0 dengan kompiler C # 7.0. Memeriksa versi .NET adalah pengurangan yang sangat terbatas dan hanya memberikan jawaban yang mungkin.
Abel
5
Izinkan saya menambahkan ke komentar @ Abel bahwa tautan ini menunjukkan kepada Anda bagaimana Anda dapat mengubah versi bahasa C # (hampir) secara independen dari framework. Jadi, Anda hanya dapat mengurangi dari kesalahan sintaksis yang Anda peroleh karena kode tersebut mengasumsikan versi C # yang lebih baru daripada yang mungkin telah Anda pilih di properti.
Matt
87

Meskipun ini tidak menjawab pertanyaan Anda secara langsung, saya menempatkan ini di sini karena google membawa halaman ini ke atas dalam pencarian saya ketika saya sedang mencari info ini.

Jika Anda menggunakan Visual Studio , Anda dapat mengklik kanan pada proyek Anda -> Properties -> Build -> Advanced Ini akan mencantumkan versi yang tersedia serta yang digunakan proj Anda.

masukkan deskripsi gambar di sini

Darth
sumber
7
Versi apa yang saya miliki jika dalam drop down saya melihat Automatically selected based on framework versiondan tidak dapat memilih apa pun dari dropdown (dinonaktifkan)? Saya menggunakan VS 2019.
hellouworld
@hellouworld Klik pada Mengapa saya tidak dapat memilih hyperlink versi C # yang berbeda dan halaman web akan memberikan Anda referensi ... kemudian kembali ke tab Aplikasi dan lihat kerangka kerja Target apa yang telah Anda pilih.
Johnny Wu
8

Versi .NET melalui registri

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ menjelajahi anak-anak dan melihat ke setiap versi. Yang dengan kunci 'Penuh' adalah versi pada sistem.

https://support.microsoft.com/en-us/kb/318785 https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx

Versi .NET melalui Visual Studio

Bantuan -> Tentang Microsoft Visual Studio -> Versi .NET ditentukan di kanan atas.

Seperti yang saya mengerti saat ini Visual studio menggunakan .NET Framework dari OS.

Target .NET Framework versi proyek di Visual Studio dapat dimodifikasi dengan Properti Proyek -> Aplikasi -> Target Framework

Melalui dll

Jika Anda tahu direktori .NET Framework misalnya C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Buka System.dll, klik kanan -> properties -> tab Details

Versi C #

Bantuan -> Tentang Microsoft Visual Studio

Dalam daftar produk yang diinstal ada Visual C #. Dalam kasus saya, Visual C # 2015

Visual Studio (Microsoft) mengirimkan C # dengan nama Visual C #.

https://msdn.microsoft.com/en-us/library/hh156499.aspx

C # 6, Visual Studio .NET 2015 Versi saat ini, lihat di bawah

Amod Pandey
sumber
7

Versi C # yang Anda gunakan sepenuhnya bergantung pada versi .Net yang Anda gunakan.

jika Anda menggunakan visual studio untuk pengembangan, Anda bisa memilih versi .net framework versi c # yang terkait dengannya datang sesuai

Ini adalah versi C # dikenal:

  • C # 1.0 dirilis dengan .NET 1.0 dan VS2002 (Januari 2002)
  • C # 1.2 (cukup aneh); dirilis dengan .NET 1.1 dan VS2003 (April 2003). Versi pertama untuk panggilan Disposepada IEnumerators yang dilaksanakan IDisposable. Beberapa fitur kecil lainnya.
  • C # 2.0 dirilis dengan .NET 2.0 dan VS2005 (November 2005). Fitur baru utama: generik, metode anonim, tipe nullable, blok iterator
  • C # 3.0 dirilis dengan .NET 3.5 dan VS2008 (November 2007). Fitur baru utama: ekspresi lambda, metode ekstensi, pohon ekspresi, jenis anonim, pengetikan implisit ( var), ekspresi kueri
  • C # 4.0 dirilis dengan .NET 4 dan VS2010 (April 2010). Fitur baru utama: late binding ( dynamic), delegate dan antarmuka generik antarmuka, lebih banyak dukungan COM, argumen bernama dan parameter opsional
  • C # 5.0 dirilis dengan .NET 4.5 pada Agustus 2012.

Refrence Jawaban C # Versi Jon Skeet

Vinay Pratap Singh
sumber
Anda dapat menggunakan beberapa fitur dari C # 3.0 di .NET 2.0 sehingga tidak benar-benar 1-1 pemetaan.
nefarel
13
Ini salah - itu tidak tergantung pada versi. NET, itu tergantung pada kompiler.
markmnl
ini jelas salah. Proyek saya saat ini diatur ke .NET 4.0 dan namun saya masih dapat menggunakan fitur C # 7.0. Tapi begitu saya push ke remote maka sistem CI / CD gagal membangun karena menggunakan C # versi 5 atau 6
phuclv
Ini tidak benar sejak C # 6.0
asaf92
6

Secara default berikut ini adalah versi yang sesuai dari kompiler C # untuk Visual Studio:

  1. Visual Studio 2015: C # 6.0
  2. Visual Studio 2013: C # 5.0
  3. Visual Studio 2012: C # 5.0
  4. Visual Studio 2010: C # 4.0
  5. Visual Studio 2008: C # 3.0
  6. Visual Studio 2005: C # 2.0
  7. Visual Studio.NET 2003: C # 1.2
  8. Visual Studio.NET 2002: C # 1.0

Anda juga dapat memodifikasi versi, ikuti langkah-langkah di bawah ini.

Buka jendela properti proyek:

step 1. Right click on the Project Name
step 2. Select "Properties" (last option in menu)
step 3. Select "Build" from left hand side options and scroll till down
step 4. click on "Advance" button.
step 5. It will open a popup and there you will get "Language Version" dropdown
step 6. Select desired version of C# and Click "OK"
Ankit Mori
sumber
5

Dari jenis prompt perintah pengembang

csc -langversion:?

Itu akan menampilkan semua versi C # yang didukung termasuk default:

1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
fortesl
sumber
5

Terima kasih kepada @fortesl dan jawaban ini

Saya menggunakan VS 2019 dan tidak mudah memberi tahu Anda versi C # yang Anda gunakan. Saya bekerja dengan .Net Core 3.0, dan VS 2019 menggunakan C # 8 di lingkungan itu. Tapi "csc -langversion :?" memperjelas ini:

D:\>csc -langversion:?
Supported language versions:
default
1
2
3
4
5
6
7.0
7.1
7.2
7.3
8.0 (default)
latestmajor
preview
latest

Tidak yakin apa yang mengidentifikasi csc -versi:

D:\>csc --version
Microsoft (R) Visual C# Compiler version 3.4.0-beta1-19462-14 (2f21c63b)
Copyright (C) Microsoft Corporation. All rights reserved.
guyr
sumber
Sepertinya OP memerlukan jawaban terkait pengodean
bradbury9
4

Jika Anda menggunakan VS2015 maka ikuti langkah-langkah di bawah ini untuk mencari tahu yang sama:

  1. Klik kanan pada proyek.
  2. Klik pada tab Properties .
  3. Dari jendela properti, pilih opsi Bangun .
  4. Dalam klik itu pada tombol Advance .
  5. Di sana Anda akan mengetahui versi bahasa.

Gambar di bawah ini menunjukkan langkah-langkah yang sama:

Langkah 1:

Langkah 1

Langkah 2:

Langkah 2

Sunil Jadhav
sumber
3

Untuk melihat versi kompiler VC # yang diinstal:

Buka Visual Studio command prompt dan cukup ketik csc kemudian tekan Enter.

Anda akan melihat sesuatu seperti berikut:

Microsoft (R) Visual C # Compiler versi 4.0.30319.34209

untuk Microsoft (R) .NET Framework 4.5

Hak Cipta (C) Microsoft Corporation. Seluruh hak cipta.

PS: " CSC " adalah singkatan dari " C Sharp Compiler ". Sebenarnya menggunakan perintah ini Anda menjalankan csc.exe yang merupakan file yang dapat dieksekusi yang terletak di "c: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX". Untuk informasi lebih lanjut tentang CSC, kunjungi http://www.file.net/process/csc.exe.html

Siyavash Hamdi
sumber
3

Untuk Windows, Anda menjalankan dev pada baris program perintah / pencarian dan memilih Prompt Perintah Pengembang untuk VS. Maka Anda hanya akan lari

csc

Sekarang Anda mendapatkan informasi yang mirip dengan

Microsoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Copyright (C) Microsoft Corporation. All rights reserved.   

Untuk Windows dan jika Anda mulai dengan terminal cmd

cd C:\Windows\Microsoft.NET\Framework\
dir

Sekarang Anda melihat semua direktori dan file di .NET \ Framework \ Tolong, pilih v ... terbaru dan pergi ke sana, misalnya,

cd v4.0.30319

Lari

csc

Anda akan melihat informasi tentang versi kompiler C #, yang bisa mirip dengan

Microsoft (R) Visual C# Compiler version 4.7.2556.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
Roma
sumber
2

Versi bahasa dipilih berdasarkan kerangka target proyek secara default.

Setiap proyek dapat menggunakan versi .Net framework yang berbeda, kompiler C # yang paling cocok akan dipilih secara default dengan melihat kerangka target. Dari visual studio, UI tidak akan mengizinkan pengguna untuk mengubah versi bahasa, namun, kami dapat mengubah versi bahasa dengan mengedit file proyek dengan penambahan grup properti baru. Tetapi ini dapat menyebabkan kompilasi / menjalankan masalah waktu dalam kode yang ada.

<PropertyGroup>  
<LangVersion>8.0</LangVersion>  
</PropertyGroup>

Saya bisa melihat yang berikut dari Microsoft docs.

Kompiler menentukan default berdasarkan aturan-aturan ini:

Target framework  version     C# language version default
.NET Core           3.x         C# 8.0
.NET Core           2.x         C# 7.3
.NET Standard       2.1         C# 8.0
.NET Standard       2.0         C# 7.3
.NET Standard       1.x         C# 7.3
.NET Framework      all         C# 7.3
Sreekanth
sumber
0

Berikut ini adalah ikhtisar tentang bagaimana .NET framework dan versi kompiler terkait, ditetapkan, dan dimodifikasi. Setiap proyek memiliki target .NET framework versi, misalnya versi 3.x atau 2.x. Kerangka .NET berisi jenis dan komponen waktu proses.

Instalasi versi Visual Studio dan versi .NET framework menentukan versi bahasa c # dan opsi kompiler yang kompatibel yang dapat digunakan. Versi c # dan opsi default yang digunakan dalam proyek Visual Studio adalah versi bahasa terbaru yang diinstal yang kompatibel dengan versi .NET framework yang digunakan.

Untuk melihat atau memperbarui bahasa Kerangka atau C # dalam proyek dalam Visual Studio 2011:

  • klik kanan proyek dalam Solution Explorer dan pilih Properties
  • pilih 'Aplikasi' di panel navigasi kiri. Di bawah Target framework: adalah versi .NET framework. Pilih panah bawah untuk melihat semua versi kerangka kerja yang tersedia.

  • pilih 'Bangun' di panel navigasi kiri. Di bagian 'Umum' panel di sebelah 'Versi Bahasa:' adalah versi bahasa c # compiler yang digunakan, misalnya 'default' atau c # 5.0

  • pilih panah bawah di dropdown 'Versi Bahasa: "untuk melihat semua versi bahasa yang tersedia. Jika' default 'adalah versi c # yang digunakan, versi bahasa c # kompatibel terbaru akan digunakan.

Untuk melihat versi bahasa kompiler yang tepat untuk 'default', masukkan yang berikut ini di command prompt pengembang untuk versi Visual Studio yang Anda instal. Misalnya, dari ikon Windows Start pilih ikon: "Prompt Perintah Pengembang untuk VS2011 'dan masukkan:

csc -langversion: Default

Microsoft (R) Visual C # Compiler versi 4.7.3062.0 untuk c # 5

edW
sumber
0

Untuk mendapatkan versi C # dari kode, gunakan kode ini dari dokumentasi Microsoft untuk mendapatkan versi .NET Framework dan kemudian cocokkan menggunakan tabel yang disebutkan semua orang. Anda dapat membuat kode peta Kerangka ke versi C # dalam kamus atau sesuatu agar fungsi Anda mengembalikan versi C #. Bekerja jika Anda memiliki .NET Framework> = 4.5.

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

      using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
      {
        if (ndpKey != null && ndpKey.GetValue("Release") != null) {
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int) ndpKey.GetValue("Release"))}");
        }
         else {
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
         } 
      }

      // Checking the version using >= enables forward compatibility.
      string CheckFor45PlusVersion(int releaseKey)
      {
         if (releaseKey >= 528040)
            return "4.8 or later";
         if (releaseKey >= 461808)
            return "4.7.2";
         if (releaseKey >= 461308)
            return "4.7.1";
         if (releaseKey >= 460798)
            return "4.7";
         if (releaseKey >= 394802)
            return "4.6.2";
         if (releaseKey >= 394254)
            return "4.6.1";      
         if (releaseKey >= 393295)
            return "4.6";      
         if (releaseKey >= 379893)
            return "4.5.2";      
         if (releaseKey >= 378675)
            return "4.5.1";      
         if (releaseKey >= 378389)
            return "4.5";      
         // This code should never execute. A non-null release key should mean
         // that 4.5 or later is installed.
         return "No 4.5 or later version detected";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1
Stack Underflow
sumber