Quelle version de C # j'utilise


191

Je veux savoir quelle version de C # j'utilise. Si j'utilisais python, je ferais quelque chose comme à python -Vpartir de la ligne de commande, ou tapez:

import sys
print sys.version

En PHP, je ferais quelque chose comme ceci: phpinfo();en java:java -version

Mais je n'ai pas pu trouver comment y parvenir en C #.

Cette question n'y répond pas, bien que son nom le suggère.

J'ai compris que cela dépend du framework .NET, mais y a-t-il un moyen par programme de déterminer mon framework? Je veux dire sans aller dans le répertoire et vérifier le nom de mes dossiers .NET.



5
dans Visual Studio: Propriétés du projet> Générer> Avancé ...> Version du langage: codeproject.com/Tips/865579/...
Slai

Réponses:


66

Pour obtenir la version du framework - regardez la version de l'un des principaux assemblys ie

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

Obtenir la version du compilateur C # est un peu plus difficile, mais vous devriez être en mesure de deviner la version en vérifiant quelle version du framework est utilisée.

Si vous utilisez le compilateur de ligne de commande (csc.exe), vous pouvez consulter l'aide pour voir la version (vous devez également connaître la version du Framework de toute façon:

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

22
Malheureusement Assembly.ImageRuntimeVersion ne vous indique pas le bon numéro de version - sur mon PC, .NET 4.6 RC est installé mais Assembly.ImageRuntimeVersion rapporte v4.0.30319
Matt

1
Sauf si vous utilisez C # 6 qui ne regarde pas la version .NET.
Michael Puckett II

2
RE: Commentaire de Matt: Ce n'est pas parce que vous avez une version de .NET installée sur votre PC que cela signifie que c'est la version utilisée dans votre projet
LoJo

@LoJo - Vous avez absolument raison. Une raison est que Visual Studio autorise le multi-ciblage (c'est-à-dire que vous pouvez sélectionner la version .NET Target Framework dans les propriétés du projet), l'autre raison est que les versions plus récentes de Roslyn doivent être ajoutées via NUGET à votre projet. Troisièmement, comme je l'ai écrit ici , csc.exe est limité à la version 5.0 et ne peut pas être utilisé pour détecter les versions supérieures de C #.
Matt

3
Personne n'a encore mentionné que l'instruction correcte pour obtenir la liste des versions prises en charge par votre compilateur Roslyn est "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe" / langversion :?
David A. Gray

235

Cela dépend de celui .NET Frameworkque vous utilisez. Vérifiez la réponse de Jon Skeet sur les versions.

Voici une version courte de sa réponse.

C # 1.0 publié avec .NET 1.0

C # 1.2 (assez bizarrement); publié avec .NET 1.1

C # 2.0 publié avec .NET 2.0

C # 3.0 publié avec .NET 3.5

C # 4.0 publié avec .NET 4

C # 5.0 publié avec .NET 4.5

C # 6.0 publié avec .NET 4.6

C # 7.0 est publié avec .NET 4.6.2

C # 7.3 est publié avec .NET 4.7.2

C # 8.0 est publié avec NET Core 3.0


4
Juste un avertissement; C # 6 utilise un compilateur différent (Roslyn) et compilera le code source vers d'autres versions .NET et pas seulement .NET 4.6.
Michael Puckett II

12
Mais vous pouvez compiler .NET 2.0 avec le compilateur C # 7.0. Vérifier la version .NET est une déduction très limitée et ne donne qu'une réponse probable.
Abel le

5
Permettez-moi d'ajouter au commentaire de @ Abel que ce lien vous montre comment vous pouvez changer la version du langage C # (presque) indépendamment du framework. Ainsi, vous ne pouvez déduire des erreurs de syntaxe que vous obtenez que le code suppose une version plus récente de C # que celle que vous auriez pu sélectionner dans les propriétés.
Matt

87

Bien que cela ne réponde pas directement à votre question, je mets ceci ici car Google a mis cette page en premier dans mes recherches lorsque je cherchais cette information.

Si vous utilisez Visual Studio , vous pouvez faire un clic droit sur votre projet -> Propriétés -> Générer -> Avancé Cela devrait répertorier les versions disponibles ainsi que celle que votre projet utilise.

entrez la description de l'image ici


7
Quelle version ai-je si dans le menu déroulant je vois le Automatically selected based on framework versionet ne peux rien sélectionner dans le menu déroulant (il est désactivé)? J'utilise le VS 2019.
hellouworld

@hellouworld Cliquez sur le lien hypertexte Pourquoi ne puis-je pas sélectionner une autre version de C # et la page Web vous fournira la référence ... puis revenez à l'onglet Application et voyez quel cadre cible vous avez sélectionné.
Johnny Wu

8

Version .NET via le registre

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ explorez les enfants et examinez chaque version. Celui avec la clé «Full» est la version sur le système.

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

Version .NET via Visual Studio

Aide -> À propos de Microsoft Visual Studio -> La version .NET est spécifiée en haut à droite.

D'après ce que je comprends à l'heure actuelle, le studio visuel utilise .NET Framework du système d'exploitation.

La version .NET Framework cible d'un projet dans Visual Studio peut être modifiée avec Propriétés du projet -> Application -> Framework cible

Grâce à la DLL

Si vous connaissez le répertoire .NET Framework, par exemple C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Ouvrez System.dll, cliquez droit -> propriétés -> onglet Détails

Version C #

Aide -> À propos de Microsoft Visual Studio

Dans les listes de produits installés, il y a Visual C #. Dans mon cas, Visual C # 2015

Visual Studio (Microsoft) fournit C # par le nom Visual C #.

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

C # 6, Visual Studio .NET 2015 Version actuelle, voir ci-dessous


7

La version C # que vous utilisez dépend totalement de la version .Net que vous utilisez.

si vous utilisez visual studio pour le développement, vous pouvez choisir la version du framework .net la version c # qui lui est associée vient en conséquence

Voici les versions de C # connues:

  • C # 1.0 publié avec .NET 1.0 et VS2002 (janvier 2002)
  • C # 1.2 (assez bizarrement); publié avec .NET 1.1 et VS2003 (avril 2003). Première version à faire appel Disposeaux IEnumerators qui ont implémenté IDisposable. Quelques autres petites fonctionnalités.
  • C # 2.0 publié avec .NET 2.0 et VS2005 (novembre 2005). Nouvelles fonctionnalités majeures: génériques, méthodes anonymes, types Nullable, blocs d'itérateur
  • C # 3.0 publié avec .NET 3.5 et VS2008 (novembre 2007). Nouvelles fonctionnalités majeures: expressions lambda, méthodes d'extension, arborescences d'expressions, types anonymes, typage implicite ( var), expressions de requête
  • C # 4.0 publié avec .NET 4 et VS2010 (avril 2010). Nouvelles fonctionnalités majeures: liaison tardive ( dynamic), variance générique des délégués et de l'interface, plus de prise en charge COM, arguments nommés et paramètres facultatifs
  • C # 5.0 publié avec .NET 4.5 en août 2012.

Réponse des versions C # de Refrence Jon Skeet


Vous pouvez utiliser certaines fonctionnalités de C # 3.0 dans .NET 2.0, ce n'est donc pas vraiment un mappage 1-1.
nefarel

13
C'est faux - cela ne dépend pas de la version .NET, cela dépend du compilateur.
markmnl

c'est tout simplement faux. Mon projet actuel est défini sur .NET 4.0 et pourtant je suis toujours en mesure d'utiliser les fonctionnalités C # 7.0. Mais une fois que je pousse à distance, le système CI / CD n'a pas pu se construire car il utilise la version C # 5 ou 6
phuclv

Ce n'est pas vrai depuis C # 6.0
asaf92

6

Par défaut, voici la version correspondante des compilateurs C # pour 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

Vous pouvez également modifier la version, veuillez suivre les étapes ci-dessous.

Ouvrez la fenêtre des propriétés du projet:

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

À partir du type d'invite de commande développeur

csc -langversion:?

Cela affichera toutes les versions C # prises en charge, y compris la valeur par défaut:

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

5

Merci à @fortesl et cette réponse

J'utilise VS 2019 et il ne vous indique pas facilement la version C # que vous utilisez. Je travaille avec .Net Core 3.0 et VS 2019 en utilisant C # 8 dans cet environnement. Mais "csc -langversion :?" rend cela clair:

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

Je ne sais pas quelle version de csc identifie:

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

On dirait que OP a besoin d'une réponse liée au codage
bradbury9

4

Si vous utilisez VS2015, suivez les étapes ci-dessous pour découvrir la même chose:

  1. Faites un clic droit sur le projet.
  2. Cliquez sur l' onglet Propriétés .
  3. Dans la fenêtre des propriétés, sélectionnez l' option Construire .
  4. En cela, cliquez sur le bouton Avancer .
  5. Vous y trouverez la version linguistique.

Les images ci-dessous montrent les étapes pour la même chose:

Étape 1:

Étape 1

Étape 2:

Étape 2


3

Afin de voir la version de compilateur installée de VC #:

Ouvrez l'invite de commande Visual Studio et tapez simplement csc, puis appuyez sur Entrée.

Vous verrez quelque chose comme ceci:

Compilateur Microsoft (R) Visual C # version 4.0.30319.34209

pour Microsoft (R) .NET Framework 4.5

Copyright (C) Microsoft Corporation. Tous les droits sont réservés.

PS: " CSC " signifie " C Sharp Compiler ". En fait, en utilisant cette commande, vous exécutez csc.exe qui est un fichier exécutable qui se trouve dans "c: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX". Pour plus d'informations sur CSC, visitez http://www.file.net/process/csc.exe.html


3

Pour Windows, vous exécutez dev sur la ligne de commande / programme de recherche et sélectionnez Invite de commandes du développeur pour VS. Alors tu vas juste courir

csc

Maintenant, vous obtenez des informations similaires à

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

Pour Windows et si vous démarrez avec le terminal cmd

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

Maintenant, vous voyez tous les répertoires et fichiers dans .NET \ Framework \ Veuillez sélectionner v ... latest et allez-y, par exemple,

cd v4.0.30319

Courir

csc

Vous verrez des informations sur la version du compilateur C #, qui peuvent être quelque chose de similaire à

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

2

La version linguistique est choisie par défaut en fonction du cadre cible du projet.

Chaque projet peut utiliser une version différente du framework .Net, le compilateur C # le mieux adapté sera choisi par défaut en regardant le framework cible. À partir de Visual Studio, l'interface utilisateur ne permettra pas aux utilisateurs de modifier la version linguistique, cependant, nous pouvons changer la version linguistique en modifiant le fichier de projet avec l'ajout d'un nouveau groupe de propriétés. Mais cela peut entraîner des problèmes de compilation / exécution dans le code existant.

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

Je pouvais voir ce qui suit dans les documents Microsoft.

Le compilateur détermine une valeur par défaut en fonction de ces règles:

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

Voici un aperçu de la façon dont le framework .NET et les versions du compilateur sont liés, définis et modifiés. Chaque projet a une (des) version (s) cible du .NET Framework, par exemple la version 3.x ou 2.x. Le framework .NET contient les types et les composants d'exécution.

L'installation de la version Visual Studio et la version du framework .NET déterminent la version du langage C # compatible et les options du compilateur qui peuvent être utilisées. La version et les options c # par défaut utilisées dans un projet Visual Studio sont la dernière version linguistique installée qui est compatible avec la version du framework .NET utilisée.

Pour afficher ou mettre à jour le Framework ou le langage C # dans un projet dans Visual Studio 2011:

  • cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions et sélectionnez Propriétés
  • sélectionnez «Application» dans le volet de navigation de gauche. Sous Framework cible: est la version du framework .NET. Sélectionnez la flèche vers le bas pour voir toutes les versions de framework disponibles.

  • sélectionnez «Construire» dans le volet de navigation de gauche. Dans la section «Général» du volet à côté de «Version du langage:» est la version du langage du compilateur c # utilisée, par exemple «par défaut» ou c # 5.0

  • sélectionnez la flèche vers le bas dans la liste déroulante «Version de la langue:» pour voir toutes les versions de langue disponibles. Si «par défaut» est la version c # utilisée, la dernière version de langage c # compatible sera utilisée.

Pour voir la version exacte du langage du compilateur pour «par défaut», entrez ce qui suit dans l'invite de commande du développeur pour votre version de Visual Studio installée. Par exemple, à partir de l'icône Démarrer de Windows, sélectionnez l'icône: «Invite de commandes du développeur pour VS2011» et entrez:

csc -langversion: Par défaut

Compilateur Microsoft (R) Visual C # version 4.7.3062.0 pour c # 5


0

Pour obtenir la version C # à partir du code, utilisez ce code de la documentation Microsoft pour obtenir la version .NET Framework, puis associez-la à l'aide du tableau que tout le monde mentionne. Vous pouvez coder le mappage de version Framework vers C # dans un dictionnaire ou quelque chose pour que votre fonction renvoie la version C #. Fonctionne si vous avez .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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.