Hangi C # sürümünü kullanıyorum


191

Hangi C # sürümünü kullandığımı öğrenmek istiyorum. Python kullanıyor olsaydım python -V, komut satırından benzer bir şey yaparım ya da şunu yazın:

import sys
print sys.version

PHP ben böyle bir şey yapardı: phpinfo();Java:java -version

Ama bunu C # ile nasıl başaramadım.

Bu soru buna cevap vermiyor, ancak ad sorması gerektiğini gösteriyor.

.NET framework bağlıdır, ama benim çerçeve anlamak için programlı bir yolu var mı? Dizine gitmeden ve .NET klasörlerimin adını kontrol etmeden demek istiyorum.


5
Bu John Skeet'in en çok puan alan sorusu
Avi Turner

5
Visual Studio'da: Proje Özellikleri> Derleme> Gelişmiş ...> Dil Sürümü: codeproject.com/Tips/865579/…
Slai

Yanıtlar:


66

Çerçevenin sürümünü almak için - ana Meclislerden birinin sürümüne bakın yani

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

C # derleyicisinin sürümünü almak biraz daha zordur, ancak hangi çerçeve sürümünün kullanıldığını kontrol ederek sürümü tahmin edebilmelisiniz.

Komut satırı derleyicisi (csc.exe) kullanıyorsanız sürümü görmek için yardımı kontrol edebilirsiniz (ayrıca Framework sürümünü bilmeniz gerekir:

C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /?
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1

22
Ne yazık ki Assembly.ImageRuntimeVersion size doğru sürüm numarasını söylemiyor - bilgisayarımda .NET 4.6 RC yüklü ancak Assembly.ImageRuntimeVersion raporları v4.0.30319
Matt

1
.NET sürümüne bakmayan C # 6 kullanmadığınız sürece.
Michael Puckett II

2
RE: Matt'in yorumu: PC'nizde bir .NET sürümü yüklü olduğu için, projenizde kullanılan sürüm olduğu anlamına gelmiyor
LoJo

@LoJo - Kesinlikle haklısın. Bunun bir nedeni, Visual Studio'nun çoklu hedeflemeye izin vermesidir (yani, proje özelliklerinde .NET Target Framework sürümünü seçebilirsiniz), bir başka neden ise yeni Roslyn sürümlerinin projenize NUGET aracılığıyla eklenmesi gerektiğidir. Üçüncü olarak, burada yazdığım gibi , csc.exe sürüm 5.0 ile sınırlıdır ve C # 'ın daha yüksek sürümlerini tespit etmek için kullanılamaz.
Matt

3
Hiç kimse Roslyn derleyiciniz tarafından desteklenen sürümlerin listesini almak için doğru talimatın "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe" olduğunu söylemedi. / langversion :?
David A. Gray

235

Kullandığınız .NET Frameworkşeye bağlıdır . Jon Skeet'in Sürümler hakkındaki cevabını kontrol edin .

İşte cevabının kısa versiyonu.

.NET 1.0 ile C # 1.0 yayımlandı

C # 1.2 (tuhaftır); .NET 1.1 ile piyasaya sürüldü

.NET 2.0 ile C # 2.0 yayınlandı

.NET 3.5 ile yayımlanan C # 3.0

.NET 4 ile C # 4.0 yayınlandı

.NET 4.5 ile C # 5.0 yayınlandı

.NET 4.6 ile C # 6.0 yayımlandı

C # 7.0 .NET 4.6.2 ile yayımlandı

C # 7.3 .NET 4.7.2 ile yayımlandı

C # 8.0 , NET Core 3.0 ile piyasaya sürüldü


4
Sadece aklınızda bulunsun; C # 6 farklı bir derleyici (Roslyn) kullanır ve kaynak kodunu sadece .NET 4.6 değil, diğer .NET sürümlerine derler.
Michael Puckett II

12
Ancak .NET 2.0'ı C # 7.0 derleyicisi ile derleyebilirsiniz. .NET sürümünü kontrol etmek çok sınırlı bir kesinti ve sadece olası bir cevap verir.
Abel

5
@ Abel'ın bu bağlantının , C # dil sürümünü (neredeyse) çerçeveden bağımsız olarak nasıl değiştirebileceğinizi gösterdiğine dair yorumunu eklememe izin verin . Böylece, sözdizimi hatalarından yalnızca kodun özelliklerde seçmiş olabileceğinizden daha yeni bir C # sürümü aldığını varsayabilirsiniz.
Matt

87

Bu, doğrudan sorunuza cevap vermese de, google bu sayfayı ararken yaptığım aramalarda ilk olarak buraya getirdiğim için buraya koyuyorum.

Eğer kullanıyorsanız , Visual Studio şunları yapabilirsiniz sağ tıklayıp üzerine Özellikler> - -> Yapı -> Gelişmiş projeniz Bu sıra proj kullandığı bir kadar sürümlerini listelemek gerekir.

resim açıklamasını buraya girin


7
Automatically selected based on framework versionAçılır menüde açılır menüden bir şey seçemediğimde (devre dışı bırakılmışsa) hangi sürüme sahibim ? VS 2019 kullanıyorum.
hellouworld

@hellouworld Neden farklı bir C # sürüm köprüsü seçemiyorum üzerine tıklayın ve web sayfası size referans sağlayacaktır ... ardından Uygulama sekmesine geri dönün ve hangi Hedef çerçeveyi seçtiğinizi görün.
Johnny Wu

8

Kayıt defteri aracılığıyla .NET sürümü

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Kurulumu \ NDP \ çocukları keşfedin ve her sürüme bakın. 'Full' anahtarlı olan sistemdeki sürümdür.

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

Visual Studio üzerinden .NET sürümü

Yardım -> Microsoft Visual Studio Hakkında -> .NET sürümü sağ üstte belirtilmiştir.

Şu anda anladığım kadarıyla Visual studio, işletim sisteminden .NET Framework kullanıyor.

Visual Studio'da bir projenin hedef .NET Framework sürümü Proje Özellikleri -> Uygulama -> Hedef Çerçeve ile değiştirilebilir

Dll aracılığıyla

.NET Framework dizinini biliyorsanız, örneğin C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

System.dll dosyasını açın, sağ tıklayın -> özellikler -> Ayrıntılar sekmesi

C # sürümü

Yardım -> Microsoft Visual Studio Hakkında

Yüklü ürün listelerinde Visual C # vardır. Benim durumumda Visual C # 2015

Visual Studio (Microsoft) Visual C # adıyla C # gönderir.

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

C # 6, Visual Studio .NET 2015 Mevcut sürüm, aşağıya bakın


7

Kullandığınız C # sürümü tamamen kullandığınız .Net sürümüne bağlıdır.

Eğer geliştirme için visual studio kullanıyorsanız, onunla ilişkili c # sürümü buna uygun olarak .net framework sürümünü seçmelisiniz.

Bunlar bilinen C # sürümleridir:

  • .NET 1.0 ve VS2002 ile C # 1.0 yayınlandı (Ocak 2002)
  • C # 1.2 (tuhaftır); .NET 1.1 ve VS2003 (Nisan 2003) ile yayımlanmıştır. Çağrısına ilk versiyonu Disposeüzerinde IEnumeratoruygulanan s IDisposable. Birkaç diğer küçük özellik.
  • C # 2.0 , .NET 2.0 ve VS2005 (Kasım 2005) ile birlikte yayımlandı . Yeni temel özellikler: jenerikler, anonim yöntemler, nullable tipler, yineleyici bloklar
  • C # 3.0 , .NET 3.5 ve VS2008 (Kasım 2007) ile birlikte yayımlanmıştır . Yeni temel özellikler: lambda ifadeleri, genişletme yöntemleri, ifade ağaçları, anonim türler, örtük yazma ( var), sorgu ifadeleri
  • C # 4.0 , .NET 4 ve VS2010 (Nisan 2010) ile piyasaya sürüldü . Başlıca yeni özellikler: geç bağlama ( dynamic), delege ve arabirim jenerik varyansı, daha fazla COM desteği, adlandırılmış argümanlar ve isteğe bağlı parametreler
  • C # 5.0 , Ağustos 4.5'te .NET 4.5 ile piyasaya sürüldü .

Refrence Jon Skeet'nin C # Sürümleri Cevap


U, .NET 2.0'da C # 3.0'ın bazı özelliklerini kullanabilir, bu yüzden gerçekten 1-1 eşleme değildir.
nefarel

13
Bu yanlıştır - .NET sürümüne bağlı değildir, derleyiciye bağlıdır.
markmnl

bu çok yanlış. Mevcut projem .NET 4.0 olarak ayarlanmış ancak yine de C # 7.0 özelliklerini kullanabiliyorum. Ama bir kez uzaktan kumandaya
bastığımda

C # 6.0'dan beri bu doğru değil
asaf92

6

Varsayılan olarak, Visual Studio için C # derleyicilerinin karşılık gelen sürümü şunlardır:

  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

Sürümü de değiştirebilirsiniz, lütfen aşağıdaki adımları izleyin.

Proje özellikleri penceresini açın:

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"

5

Geliştirici komut istemi türünden

csc -langversion:?

Bu, varsayılan dahil olmak üzere desteklenen tüm C # sürümlerini görüntüler:

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

5

@Fortesl ve bu cevap için teşekkürler

VS 2019 kullanıyorum ve kullandığınız C # sürümünü kolayca söylemiyor. Bu ortamda C # 8 kullanarak .Net Core 3.0 ve VS 2019 ile çalışıyorum. Ancak "csc -langversion :?" bunu netleştirir:

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

Csc -version'un neyi tanımladığından emin değilim:

D:\>csc --version
Microsoft (R) Visual C# Compiler version 3.4.0-beta1-19462-14 (2f21c63b)
Copyright (C) Microsoft Corporation. All rights reserved.

OP'nin kodlama ile ilgili bir cevaba ihtiyacı var gibi görünüyor
bradbury9

4

VS2015 kullanıyorsanız, bunu bulmak için aşağıdaki adımları izleyin:

  1. Projeye sağ tıklayın.
  2. Tıklayın Özellikler sekmesine.
  3. Özellikler penceresinden Oluştur seçeneğini belirleyin.
  4. Bunun için Gelişmiş düğmesine tıklayın.
  5. Orada dil sürümünü öğreneceksiniz.

Aşağıdaki resimler aynı adımları göstermektedir:

Aşama 1:

Aşama 1

Adım 2:

Adım 2


3

Yüklü VC # derleyici sürümünü görmek için:

Visual Studio komut istemini açın ve csc yazın ve Enter tuşuna basın.

Aşağıdaki gibi bir şey göreceksiniz:

Microsoft (R) Visual C # Derleyici sürümü 4.0.30319.34209

Microsoft (R) .NET Framework 4.5 için

Telif Hakkı (C) Microsoft Corporation. Tüm hakları Saklıdır.

PS: " CSC ", " C Sharp Compiler " anlamına gelir. Aslında bu komutu kullanarak, "c: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX" klasöründe bulunan yürütülebilir bir dosya olan csc.exe dosyasını çalıştırırsınız. CSC hakkında daha fazla bilgi için http://www.file.net/process/csc.exe.html adresini ziyaret edin.


3

Windows için, dev komutunu / arama programı satırında çalıştırır ve VS için Geliştirici Komut İstemi'ni seçersiniz. Sonra sadece koşacaksın

csc

Şimdi benzer bilgilere sahip oluyorsunuz

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

Windows için ve cmd terminali ile başlarsanız

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

Şimdi tüm dizinleri ve dosyaları .NET \ Framework \ 'de görüyorsunuz. Lütfen en son v ...' u seçin ve oraya gidin, örneğin,

cd v4.0.30319

Çalıştırmak

csc

C # derleyicisinin sürümü hakkında benzer bir şey olabilen bilgileri göreceksiniz.

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

2

Dil sürümü, varsayılan olarak projenin hedef çerçevesine göre seçilir.

Her proje .Net çerçevesinin farklı bir sürümünü kullanabilir, hedef çerçeveye bakarak varsayılan olarak en uygun C # derleyicisi seçilecektir. Görsel stüdyoda, kullanıcı arayüzü kullanıcıların dil sürümünü değiştirmesine izin vermeyecektir, ancak yeni özellik grubu ekleyerek proje dosyasını düzenleyerek dil sürümünü değiştirebiliriz. Ancak bu, varolan kodda derleme / çalışma zamanı sorunlarına neden olabilir.

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

Microsoft belgelerinden aşağıdakileri görebiliyordum.

Derleyici varsayılan olarak şu kurallara göre belirler:

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

0

İşte .NET framework ve derleyici sürümlerinin nasıl ilişkilendirildiği, ayarlandığı ve değiştirildiği hakkında genel bir bakış. Her projenin hedef .NET çerçeve sürümleri vardır, örneğin sürüm 3.x veya 2.x. .NET çerçevesi çalışma zamanı türlerini ve bileşenlerini içerir.

Visual Studio sürüm yüklemesi ve .NET framework sürümü, kullanılabilecek uyumlu c # dil sürümünü ve derleyici seçeneklerini belirler. Visual Studio projesinde kullanılan varsayılan c # sürümü ve seçenekleri, kullanılan .NET framework sürümüyle uyumlu olan en son dil sürümüdür.

Visual Studio 2011 içindeki bir proje içindeki Framework veya C # dilini görüntülemek veya güncelleştirmek için:

  • Solution Explorer içinde projeye sağ tıklayın ve Özellikler'i seçin
  • sol gezinme bölmesinde 'Uygulama'yı seçin. Hedef çerçeve altında: .NET çerçeve sürümüdür. Mevcut tüm çerçeve sürümlerini görmek için aşağı oku seçin.

  • sol gezinme bölmesinde 'Oluştur'u seçin. Bölmenin 'Dil Sürümü' yanındaki 'Genel' bölümünde kullanılan c # derleyici dili sürümü, örneğin 'varsayılan' veya c # 5.0

  • kullanılabilir tüm dil sürümlerini görmek için 'Dil Sürümü: "açılır menüsünde aşağı oku seçin.' Varsayılan 'kullanılan c # sürümü ise, en son uyumlu c # dili sürümü kullanılır.

'Varsayılan' için derleyici dili sürümünü tam olarak görmek için, yüklü Visual Studio sürümünüz için geliştirici komut istemine aşağıdakini girin. Örneğin, Windows Başlat simgesinden simge seçin: "VS2011 için Geliştirici Komut İstemi" ve şunu girin:

csc -langversion: Varsayılan

Microsoft (R) Visual C # Derleyici sürüm 4.7.3062.0 c # 5 için


0

Koddan C # sürümünü almak için , Microsoft Framework'ten bu kodu kullanarak .NET Framework sürümünü edinin ve herkesin bahsettiği tabloyu kullanarak eşleştirin . Çerçeveyi sözlükte C # sürüm eşlemesine veya aslında işlevinizin C # sürümünü döndürmesini sağlayacak bir şeye kodlayabilirsiniz. .NET Framework> = 4.5 sürümünüz varsa çalışır.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.