Яку версію C # я використовую


191

Я хочу дізнатися, яку версію C # я використовую. Якщо я використовую python, я б зробив щось на зразок python -Vкомандного рядка або введіть:

import sys
print sys.version

У PHP я би зробив щось подібне: phpinfo();in java:java -version

Але мені не вдалося знайти, як цього досягти в C #.

На це запитання не відповідає, хоча назва підказує, що так і слід.

Я зрозумів, що це залежить від .NET рамки, але чи існує програмний спосіб з'ясувати мій фреймворк? Я маю на увазі, не заходячи в каталог і не перевіряючи назву моїх .NET папок.


5
Це найкраще оцінене питання Джона Скіта
Аві Тернер

5
у Visual Studio: Властивості проекту> Створення> Розширений ...> Версія мови: codeproject.com/Tips/865579/…
Slai

Відповіді:


66

Щоб отримати версію фреймворку - подивіться версію однієї з основних зборів, тобто

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

Отримати версію компілятора C # дещо складніше, але ви повинні мати можливість відгадати версію, перевіривши, яка версія версії використовується.

Якщо ви використовуєте компілятор командного рядка (csc.exe), ви можете перевірити довідку, щоб побачити версію (також вам все одно потрібно знати версію Framework:

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

22
На жаль Assembly.ImageRuntimeVersion не повідомляє вам потрібний номер версії - на моєму ПК встановлено .NET 4.6 RC , але Assembly.ImageRuntimeVersion повідомляє v4.0.30319
Matt

1
Якщо ви не використовуєте C # 6, який не переглядає версію .NET
Майкл Пукетт II

2
RE: коментар Метта: Тільки тому, що у вас на ПК встановлена ​​одна версія .NET, це не означає, що версія використовується у вашому проекті
LoJo

@LoJo - Ви абсолютно праві. Одна з причин полягає в тому, що Visual Studio дозволяє здійснювати багатоцільове націлювання (тобто ви можете обрати версію .NET Target Framework у властивостях проекту), інша причина - нові версії Roslyn потрібно додавати через проект NUGET. По-третє, як я писав тут , csc.exe обмежений версією 5.0 і не може використовуватися для виявлення вищих версій C #.
Метт

3
Ніхто ще не згадав, що правильна інструкція отримати список версій, підтримуваних вашим компілятором Roslyn, - "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe" / langversion :?
Девід А. Грей

235

Це залежить від того, .NET Frameworkщо ви використовуєте. Перевірте відповідь Джона Скіта про версії.

Ось коротка версія його відповіді.

C # 1.0 випущено за допомогою .NET 1.0

C # 1.2 (досить химерно); випущено за допомогою .NET 1.1

C # 2.0 випущений за допомогою .NET 2.0

C # 3.0 випущено за допомогою .NET 3.5

C # 4.0 випущено за допомогою .NET 4

C # 5.0 випущено за допомогою .NET 4.5

C # 6.0 випущено за допомогою .NET 4.6

C # 7.0 випускається за допомогою .NET 4.6.2

C # 7.3 випускається за допомогою .NET 4.7.2

C # 8.0 випускається за допомогою NET Core 3.0


4
Просто голови вгору; C # 6 використовує інший компілятор (Roslyn) і буде компілювати вихідний код для інших версій .NET, а не лише .NET 4.6.
Майкл Пукетт II

12
Але ви можете компілювати .NET 2.0 за допомогою компілятора C # 7.0. Перевірка версії .NET є дуже обмеженою відрахуванням і дає лише ймовірну відповідь.
Авель

5
Дозвольте додати до коментаря @ Abel, що це посилання показує вам, як ви можете змінити версію мови C # (майже) незалежно від рамки. Таким чином, ви можете вирахувати лише з синтаксичних помилок, які ви отримуєте, що код передбачає нову версію C #, ніж ви могли обрати у властивостях.
Метт

87

Хоча це не відповідає на ваше запитання безпосередньо, я ставлю це тут, оскільки Google шукав цю сторінку першим у своїх пошуках, коли я шукав цю інформацію.

Якщо ви використовуєте Visual Studio , ви можете клацнути правою кнопкою миші на вашому проекті -> Властивості -> Збірка -> Додатково. У цьому списку повинні бути перелічені доступні версії, а також версія, яку використовує ваш proj.

введіть тут опис зображення


7
Яку версію я маю, якщо у спадному меню я бачу Automatically selected based on framework versionі не можу вибрати щось зі спадного меню (він вимкнено)? Я використовую VS 2019.
hellouworld

@hellouworld Клацніть на Чому я не можу вибрати інше гіперпосилання версії C #, і веб-сторінка надасть вам довідку ... потім поверніться до вкладки «Програми» та подивіться, яку обрану цільову рамку ви вибрали.
Джонні Ву

8

Версія .NET через реєстр

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ вивчіть дітей та вивчіть кожну версію. Той, який має ключ "Повний", - це версія в системі.

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

Версія .NET через Visual Studio

Довідка -> Про Microsoft Visual Studio -> Версія .NET вказана вгорі праворуч.

Як я розумію, в цей час Visual studio використовує .NET Framework з ОС.

Цільову версію проекту .NET Framework проекту в Visual Studio можна змінити за допомогою властивостей проекту -> Application -> Target Framework

Через DLL

Якщо ви знаєте каталог .NET Framework, наприклад C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Відкрийте System.dll, клацніть правою кнопкою миші -> властивості -> вкладка Деталі

C # версія

Довідка -> Про Microsoft Visual Studio

У списках встановлених продуктів є Visual C #. У моєму випадку Visual C # 2015

Visual Studio (Microsoft) постачає C # за назвою Visual C #.

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

C # 6, Visual Studio .NET 2015 Поточна версія, див. Нижче


7

Версія C #, яку ви використовуєте, повністю залежить від версії .Net, яку ви використовуєте.

якщо ви використовуєте візуальну студію для розробки, ви вибираєте версію фреймворку .net, відповідною версією c #

Це відомі версії C #:

  • C # 1.0 випущений разом з .NET 1.0 та VS2002 (січень 2002)
  • C # 1.2 (досить химерно); випущений разом з .NET 1.1 та VS2003 (квітень 2003). Перша версія для виклику Disposeна IEnumeratorз здійснила IDisposable. Ще кілька невеликих функцій.
  • C # 2.0 випущений разом з .NET 2.0 та VS2005 (листопад 2005 р.). Основні нові функції: дженерики, анонімні методи, зведені типи, блоки ітераторів
  • C # 3.0 випущений разом з .NET 3.5 та VS2008 (листопад 2007 р.). Основні нові функції: лямбда-вирази, методи розширення, дерева виразів, анонімні типи, неявна введення тексту ( var), вирази запитів
  • C # 4.0 випущений разом з .NET 4 та VS2010 (квітень 2010 р.). Основні нові функції: пізнє прив'язування ( dynamic), делегація та загальна дисперсія інтерфейсу, більше підтримка COM, названі аргументи та необов'язкові параметри
  • C # 5.0 випущено разом із .NET 4.5 у серпні 2012 року.

Відповідь C # Версії Refrence Jona Skeet


Ви можете використовувати деякі функції від C # 3.0 в .NET 2.0, тому це насправді не 1-1 зіставлення.
nefarel

13
Це неправильно - це не залежить від версії .NET, це залежить від компілятора.
markmnl

це явно неправильно. Мій поточний проект встановлений на .NET 4.0, але я все ще можу використовувати функції C # 7.0. Але як тільки я натискаю на віддалений, система CI / CD не вдалося побудувати, оскільки вона використовує C # версії 5 або 6
phuclv

Це неправда, оскільки C # 6.0
asaf92

6

За замовчуванням наведена відповідна версія компіляторів C # для 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

Ви також можете змінити версію, будь ласка, дотримуйтесь наведених нижче кроків.

Відкрийте вікно властивостей проекту:

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

З типу командного рядка розробника

csc -langversion:?

Тут відображатимуться всі підтримувані версії C #, включаючи стандартні:

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

5

Завдяки @fortesl і цій відповіді

Я використовую VS 2019, і він не може легко сказати вам версію C #, яку ви використовуєте. Я працюю з .Net Core 3.0 та VS 2019, використовуючи C # 8 у цьому середовищі. Але "csc -лангверсія :?" це ясно:

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 -версія:

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

Схоже, що ОП потребує відповіді, що стосується кодування
bradbury9

4

Якщо ви використовуєте VS2015, виконайте наведені нижче кроки, щоб дізнатися те саме:

  1. Клацніть правою кнопкою миші на проекті.
  2. Перейдіть на вкладку Властивості .
  3. У вікні властивостей виберіть параметр " Збірка ".
  4. У цьому натисніть на кнопку " Попередньо" .
  5. Там ви дізнаєтесь мовну версію.

Нижче зображень показано кроки для того ж:

Крок 1:

Крок 1

Крок 2:

Крок 2


3

Для того, щоб побачити встановлену версію компілятора VC #:

Відкрийте командний рядок Visual Studio і просто введіть csc і натисніть Enter.

Ви побачите щось таке:

Microsoft (R) Visual C # Compiler, версія 4.0.30319.34209

для Microsoft (R) .NET Framework 4.5

Авторські права (C) Корпорація Microsoft. Всі права захищені.

PS: Стійка " CSC " для " C Sharp Compiler ". Фактично, використовуючи цю команду, ви запускаєте csc.exe, який є виконавчим файлом, який знаходиться в "c: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX". Для отримання додаткової інформації про CSC відвідайте http://www.file.net/process/csc.exe.html


3

Для Windows, ви запускаєте програму dev у командно-пошуковій програмі та вибираєте командний рядок Developer для VS. Тоді ви збираєтеся просто бігти

csc

Тепер ви отримуєте схожу інформацію

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

Для Windows і якщо ви починаєте з терміналу cmd

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

Тепер ви бачите всі каталоги та файли в .NET \ Framework \ Будь ласка, виберіть v ... останнє та перейдіть туди, наприклад,

cd v4.0.30319

Біжи

csc

Ви побачите інформацію про версію компілятора C #, яка може бути щось подібне

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

2

Мовна версія вибирається на основі цільової рамки проекту за замовчуванням.

Кожен проект може використовувати іншу версію фреймворку .Net, за замовчуванням вибирається найкращий компілятор C #, переглядаючи цільову рамку. З візуальної студії користувальницький інтерфейс не дозволить користувачам змінювати мовну версію, проте ми можемо змінити мовну версію, відредагувавши файл проекту з додаванням нової групи властивостей. Але це може спричинити проблеми з компіляцією / запуском у існуючому коді.

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

Я можу побачити наступне з документів Microsoft.

Компілятор визначає за замовчуванням на основі цих правил:

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

Ось огляд того, як версії .NET Framework та компілятор пов'язані, встановлені та змінені. Кожен проект має цільову версію (-ів) .NET, наприклад версію 3.x або 2.x. Рамка .NET містить типи та компоненти часу виконання.

Встановлення версії Visual Studio та версія .NET Framework визначають сумісність версії мови та компілятора c #, яка може бути використана. Версія c # за замовчуванням та параметри, що використовуються в проекті Visual Studio - це остання встановлена ​​мовна версія, сумісна з використовуваною версією .NET Framework.

Щоб переглянути або оновити мову Framework або мову C # в рамках проекту в Visual Studio 2011:

  • клацніть правою кнопкою миші проект у Провіднику рішень та виберіть Властивості
  • у лівій області навігації виберіть "Застосувати". Під Target Framework: це версія .NET Framework. Виберіть стрілку вниз, щоб побачити всі доступні версії фреймворку.

  • виберіть "Побудувати" у лівій панелі навігації. У розділі "Загальні" на панелі поруч із "Мовна версія:" використовується версія мовлення компілятора c #, наприклад "за замовчуванням" або c # 5.0

  • виберіть стрілку вниз у спадному меню "Версія мови:", щоб побачити всі доступні версії мови. Якщо "за замовчуванням" використовується версія c #, буде використано останню сумісну версію мови #.

Щоб побачити точну версію мови компілятора для "за замовчуванням", введіть наступне у командному рядку розробника для встановленої версії Visual Studio. Наприклад, з піктограми «Пуск Windows» виберіть піктограму: «Командний рядок розробника для VS2011» та введіть:

csc -лангверсія: за замовчуванням

Microsoft (R) Visual C # Compiler, версія 4.7.3062.0 для c # 5


0

Щоб отримати версію C # від коду, використовуйте цей код з документації Microsoft, щоб отримати версію .NET Framework, а потім співставте її за допомогою таблиці, яку згадують усі інші. Ви можете кодувати карту версій Framework до C # у словнику або щось, щоб насправді ваша функція повертала версію C #. Працює, якщо у вас є .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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.