Quale versione di C # sto usando


191

Voglio scoprire quale versione di C # sto usando. Se usassi Python, farei qualcosa di simile python -Vdalla riga di comando, o digitare:

import sys
print sys.version

In PHP farei qualcosa del genere: phpinfo();in java:java -version

Ma non sono stato in grado di trovare come raggiungere questo obiettivo in C #.

Questa domanda non risponde, anche se il nome suggerisce che dovrebbe.

Ho capito che dipende dal framework .NET, ma esiste un modo programmatico per capire il mio framework? Voglio dire senza andare nella directory e controllare il nome delle mie cartelle .NET.


5
Questa è la domanda
Avi Turner,

5
in Visual Studio: Proprietà progetto> Genera> Avanzate ...> Versione lingua: codeproject.com/Tips/865579/…
Slai

Risposte:


66

Per ottenere la versione del framework - guarda la versione di uno dei principali assiemi cioè

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

Ottenere la versione del compilatore C # è un po 'più difficile, ma dovresti essere in grado di indovinare la versione controllando quale versione del framework viene utilizzata.

Se stai utilizzando il compilatore della riga di comando (csc.exe) puoi consultare la guida per vedere la versione (inoltre dovresti comunque conoscere la versione di Framework:

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

22
Purtroppo Assembly.ImageRuntimeVersion non ti dice il numero di versione giusto - sul mio PC è installato .NET 4.6 RC ma Assembly.ImageRuntimeVersion riporta v4.0.30319
Matt

1
A meno che tu non stia usando C # 6 che non guarda alla versione .NET.
Michael Puckett II,

2
RE: Il commento di Matt: Solo perché sul tuo PC è installata una versione di .NET, ciò non significa che sia la versione in uso nel tuo progetto
LoJo,

@LoJo - Hai assolutamente ragione. Uno dei motivi è che Visual Studio consente il multi-targeting (ovvero è possibile selezionare la versione di .NET Target Framework nelle proprietà del progetto), l'altro motivo è che le nuove versioni di Roslyn devono essere aggiunte tramite NUGET al progetto. In terzo luogo, come ho scritto qui , csc.exe è limitato alla versione 5.0 e non può essere utilizzato per rilevare versioni successive di C #.
Matt,

3
Nessuno ha ancora menzionato che l'istruzione corretta per ottenere l'elenco delle versioni supportate dal compilatore Roslyn è "C: \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe" / langversion :?
David A. Gray,

235

Dipende da .NET Frameworkquello che usi. Controlla la risposta di Jon Skeet sulle versioni.

Ecco la versione breve della sua risposta.

C # 1.0 rilasciato con .NET 1.0

C # 1.2 (abbastanza stranamente); rilasciato con .NET 1.1

C # 2.0 rilasciato con .NET 2.0

C # 3.0 rilasciato con .NET 3.5

C # 4.0 rilasciato con .NET 4

C # 5.0 rilasciato con .NET 4.5

C # 6.0 rilasciato con .NET 4.6

C # 7.0 è rilasciato con .NET 4.6.2

C # 7.3 è rilasciato con .NET 4.7.2

C # 8.0 viene rilasciato con NET Core 3.0


4
Solo un avviso; C # 6 utilizza un compilatore diverso (Roslyn) e compilerà il codice sorgente su altre versioni .NET non solo .NET 4.6.
Michael Puckett II,

12
Ma puoi compilare .NET 2.0 con il compilatore C # 7.0. Il controllo della versione .NET è una detrazione molto limitata e fornisce solo una risposta probabile.
Abele,

5
Vorrei aggiungere al commento di @ Abel che questo link mostra come è possibile modificare la versione del linguaggio C # (quasi) indipendentemente dal framework. Quindi puoi solo dedurre dagli errori di sintassi che stai ricevendo che il codice assume una versione più recente di C # di quella che potresti aver selezionato nelle proprietà.
Matt,

87

Anche se questo non risponde direttamente alla tua domanda, la sto inserendo qui poiché Google ha visualizzato prima questa pagina nelle mie ricerche mentre cercavo queste informazioni.

Se stai usando Visual Studio , puoi fare clic con il tasto destro del mouse sul tuo progetto -> Proprietà -> Costruisci -> Avanzate Questo dovrebbe elencare le versioni disponibili e quella utilizzata dal proj.

inserisci qui la descrizione dell'immagine


7
Quale versione ho se nel Automatically selected based on framework versionmenu a discesa visualizzo e non riesco a selezionare nulla dal menu a discesa (è disabilitato)? Sto usando il VS 2019.
ciaouworld il

@hellouworld Fai clic sul collegamento ipertestuale Perché non riesco a selezionare una versione C # diversa e la pagina web ti fornirà il riferimento ... quindi torna alla scheda Applicazione e vedi quale framework Target hai selezionato.
Johnny Wu,

8

Versione .NET tramite registro

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ esplora i bambini e cerca in ogni versione. Quello con il tasto 'Full' è la versione sul sistema.

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

Versione .NET tramite Visual Studio

Guida -> Informazioni su Microsoft Visual Studio -> La versione .NET è specificata in alto a destra.

Come ho capito in questo momento Visual Studio utilizza .NET Framework dal sistema operativo.

La versione di .NET Framework di destinazione di un progetto in Visual Studio può essere modificata con Proprietà progetto -> Applicazione -> Framework di destinazione

Attraverso la DLL

Se si conosce la directory di .NET Framework, ad esempio C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Apri System.dll, fai clic con il pulsante destro del mouse -> proprietà -> scheda Dettagli

Versione C #

Guida -> Informazioni su Microsoft Visual Studio

Negli elenchi dei prodotti installati è presente Visual C #. Nel mio caso Visual C # 2015

Visual Studio (Microsoft) spedisce C # per nome Visual C #.

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

C # 6, Visual Studio .NET 2015 Versione corrente, vedere di seguito


7

La versione C # che stai usando dipende totalmente dalla versione .Net che stai usando.

se stai usando Visual Studio per lo sviluppo, puoi scegliere la versione del framework .net la versione c # ad essa associata viene di conseguenza

Queste sono le versioni di C # conosciute:

  • C # 1.0 rilasciato con .NET 1.0 e VS2002 (gennaio 2002)
  • C # 1.2 (abbastanza stranamente); rilasciato con .NET 1.1 e VS2003 (aprile 2003). Prima versione da chiamare Disposesu IEnumeratorche implementata IDisposable. Alcune altre piccole funzionalità.
  • C # 2.0 rilasciato con .NET 2.0 e VS2005 (novembre 2005). Principali nuove funzionalità: generici, metodi anonimi, tipi nullable, blocchi iteratori
  • C # 3.0 rilasciato con .NET 3.5 e VS2008 (novembre 2007). Principali nuove funzionalità: espressioni lambda, metodi di estensione, alberi delle espressioni, tipi anonimi, typing implicito ( var), espressioni di query
  • C # 4.0 rilasciato con .NET 4 e VS2010 (aprile 2010). Principali novità: associazione tardiva ( dynamic), varianza generica dell'interfaccia e del delegato, più supporto COM, argomenti denominati e parametri opzionali
  • C # 5.0 rilasciato con .NET 4.5 nell'agosto 2012.

Refrence Risposta delle versioni C # di Jon Skeet


U può usare alcune funzionalità di C # 3.0 in .NET 2.0, quindi non è realmente il mapping 1-1.
Nefarel,

13
Questo è sbagliato - non dipende dalla versione .NET, dipende dal compilatore.
markmnl

questo è chiaramente sbagliato. Il mio progetto attuale è impostato su .NET 4.0 e tuttavia sono ancora in grado di utilizzare le funzionalità di C # 7.0. Ma una volta che spingo sul telecomando, il sistema CI / CD non è riuscito a
compilare

Questo non è vero dal C # 6.0
asaf92 del

6

Per impostazione predefinita, di seguito sono riportate le versioni corrispondenti dei compilatori C # per 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

Puoi anche modificare la versione, segui i passaggi seguenti.

Apri la finestra delle proprietà del progetto:

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

Dal tipo di prompt dei comandi per sviluppatori

csc -langversion:?

Verranno visualizzate tutte le versioni di C # supportate, incluso il valore predefinito:

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

5

Grazie a @fortesl e questa risposta

Sto usando VS 2019 e non ti dice facilmente la versione C # che stai usando. Sto lavorando con .Net Core 3.0 e VS 2019 usando C # 8 in quell'ambiente. Ma "csc -langversion :?" chiarisce questo:

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

Non sono sicuro di quale csc -version stia identificando:

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

Sembra che OP abbia bisogno di una risposta relativa alla codifica
bradbury9

4

Se stai usando VS2015, segui i passaggi seguenti per scoprire lo stesso:

  1. Fare clic con il tasto destro sul progetto.
  2. Fai clic sulla scheda Proprietà .
  3. Dalla finestra delle proprietà selezionare l' opzione Crea .
  4. In quel clic sul pulsante Advance .
  5. Lì troverai la versione linguistica.

Le immagini seguenti mostrano i passaggi per lo stesso:

Passo 1:

Passo 1

Passo 2:

Passo 2


3

Per vedere la versione del compilatore installata di VC #:

Apri il prompt dei comandi di Visual Studio e digita semplicemente csc, quindi premi Invio.

Vedrai qualcosa di simile al seguente:

Compilatore Microsoft (R) Visual C # versione 4.0.30319.34209

per Microsoft (R) .NET Framework 4.5

Copyright (C) Microsoft Corporation. Tutti i diritti riservati.

PS: " CSC " sta per " C Sharp Compiler ". In realtà utilizzando questo comando si esegue csc.exe che è un file eseguibile che si trova in "c: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX". Per ulteriori informazioni su CSC, visitare http://www.file.net/it/processo/csc.exe.html


3

Per Windows, esegui dev nella riga di comando / ricerca del programma e seleziona Prompt dei comandi per sviluppatori per VS. Allora corri e basta

csc

Ora ottieni informazioni simili a

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

Per Windows e se inizi con il terminale cmd

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

Ora vedi tutte le directory e i file in .NET \ Framework \ Please, seleziona v ... latest e vai lì, ad esempio,

cd v4.0.30319

Correre

csc

Vedrai informazioni sulla versione del compilatore C #, che può essere qualcosa di simile a

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

2

La versione della lingua viene scelta in base al framework di destinazione del progetto per impostazione predefinita.

Ogni progetto può utilizzare una versione diversa del framework .Net, il compilatore C # più adatto verrà scelto di default guardando il framework di destinazione. Da Visual Studio, l'interfaccia utente non consentirà agli utenti di modificare la versione della lingua, tuttavia, possiamo cambiare la versione della lingua modificando il file di progetto con l'aggiunta di un nuovo gruppo di proprietà. Ma ciò può causare problemi di compilazione / runtime nel codice esistente.

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

Ho potuto vedere quanto segue dai documenti Microsoft.

Il compilatore determina un valore predefinito in base a queste regole:

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

Ecco una panoramica di come le versioni di .NET framework e compilatore sono correlate, impostate e modificate. Ogni progetto ha una o più versioni di .NET framework di destinazione, ad esempio la versione 3.xo 2.x. Il framework .NET contiene i tipi e i componenti di runtime.

L'installazione della versione di Visual Studio e la versione di .NET framework determinano la versione del linguaggio c # compatibile e le opzioni del compilatore che è possibile utilizzare. La versione c # predefinita e le opzioni utilizzate in un progetto Visual Studio sono l'ultima versione della lingua installata compatibile con la versione di .NET framework utilizzata.

Per visualizzare o aggiornare il linguaggio Framework o C # all'interno di un progetto in Visual Studio 2011:

  • fare clic con il tasto destro del mouse su Esplora soluzioni e selezionare Proprietà
  • seleziona "Applicazione" nel riquadro di navigazione a sinistra. In Target framework: è la versione di .NET framework. Selezionare la freccia giù per vedere tutte le versioni del framework disponibili.

  • seleziona "Costruisci" nel riquadro di navigazione a sinistra. Nella sezione "Generale" del riquadro accanto a "Versione lingua:" è la versione della lingua del compilatore c # utilizzata, ad esempio "predefinito" o c # 5.0

  • seleziona la freccia verso il basso nel menu a discesa "Versione lingua:" per visualizzare tutte le versioni linguistiche disponibili. Se "default" è la versione c # in uso, verrà utilizzata la versione linguaggio c # compatibile più recente.

Per visualizzare la versione esatta della lingua del compilatore per "impostazione predefinita", immettere quanto segue nel prompt dei comandi dello sviluppatore per la versione di Visual Studio installata. Ad esempio, dall'icona Start di Windows selezionare l'icona: "Prompt dei comandi per sviluppatori per VS2011" e inserire:

csc -langversion: impostazione predefinita

Compilatore Microsoft (R) Visual C # versione 4.7.3062.0 per c # 5


0

Per ottenere la versione C # dal codice, utilizzare questo codice dalla documentazione Microsoft per ottenere la versione di .NET Framework e quindi abbinarla utilizzando la tabella menzionata da tutti gli altri. È possibile codificare la mappa della versione da Framework a C # in un dizionario o qualcosa del genere affinché la funzione restituisca effettivamente la versione C #. Funziona se hai .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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.