Як знайти версію .NET?


258

Як дізнатися, яка версія .NET встановлена?

Я шукаю щось таке просте, як "java -version", яке я можу набрати в командному рядку, і це повідомляє мені про встановлену (-ю) версію (-и).

Я краще додам, що Visual Studio може не встановлюватися - це, як правило, те, що я хочу знати про клієнтську машину.


2
Перейдіть, щоб запустити та виконати цю команду: wmic / namespace: \\ root \ cimv2 path win32_product, де "name like" %%. NET %% '"отримати версію
HENG Vongkol


Відповіді:


250

Просто введіть будь-яку з наведених нижче команд, щоб ви отримали останню версію в першому рядку.

1. CSC
2. GACUTIL /l ?
3. CLRVER

Ви можете запустити їх лише з вікна Visual Studio Command, якщо інстальовано Visual Studio, або якщо у вас є .NET Framework SDK, а потім командний рядок SDK.

4. wmic product get description | findstr /C:".NET Framework"
5. dir /b /ad /o-n %systemroot%\Microsoft.NET\Framework\v?.*

В останній команді (5) будуть перераховані всі версії (крім 4.5) встановленої .NET, найпершої .
Вам потрібно виконати 4-ю команду, щоб побачити, чи встановлено .NET 4.5.

Ще три варіанти з командного рядка PowerShell наведені нижче.

6.   [environment]::Version
7.   $PSVersionTable.CLRVersion
8.   gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | gp -name Version,Release -EA 0 |
     where { $_.PSChildName -match '^(?!S)\p{L}'} | select PSChildName, Version, Release

Остання команда (8) надасть всі версії, включаючи .NET 4.5.


6
'CSC' працюватиме лише з командного рядка Visual Studio (за замовчуванням). Він також дасть вам лише максимальну версію фреймворку .NET, на яку спрямована версія компілятора. - Якщо у вас встановлено VS2005 та VS2008, різні версії CSC повідомлять про різні версії.
Метт Лейсі

15
cscвиводить версію компілятора C #, а не версію .NET Framework.
Тімві

4
остання команда не повертала версію 4.5, хоча я думаю, що я її встановив. Відповідь на stackoverflow.com/questions/3487265/… включила її.
Лемпрепарат

2
Остання команда не відображає останню версію. Ми можемо знайти версію в appwiz.cpl або команда 'wmic product' також корисна. windows-commandline.com/find-net-version-on-your-computer
Гірі

11
Ура за номер 8!
Ліонет Чен

330

Існує простіший спосіб отримати точну версію .NET версії, встановленої на вашій машині, із запиту cmd. Просто дотримуйтесь наступних інструкцій;

  1. Відкрийте командний рядок (тобто Windows + R → введіть "cmd").
  2. Введіть таку команду в одному рядку:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP"

(Тут буде перелічено всі версії .NET.)

  1. Якщо ви хочете перевірити останню версію .NET 4.
  2. Введіть наступну інструкцію в одному рядку:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\full" /v version

Знайдіть додане зображення нижче, щоб побачити, як воно відображається.

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


4
виявив, що це найпростіший і найточніший (з кінцем "* \ v4 \ Full" в кінці), оскільки він також отримує другорядну версію лише за допомогою однієї простої команди.
Ігнас Вишня

1
Приємно. Хотів щось, що працювало б на ПК користувачів, і це все. Дякую!
Келлі

Повна інформація та приклади: docs.microsoft.com/en-us/dotnet/framework/migration-guide/…
друкарня

6
Добре, але не показує рамки 4.5, 4.6 та 4.7, які встановлені на моїй машині Windows 7 :(
Zeek2

не зовсім точний; Я переглядаю Панель управління> Програми та функції, і немає ознак .NET .; проте я запускаю вашу команду, і це дає мені вихід HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v4.0. Можливо, колись інстальовано .NET на моїй машині, було невідобрано, але реєстр не очистився
вентилятор Ньютона 01


30

Перш ніж перейти до командного рядка, виконайте ці кроки ...

Відкрийте Мій комп'ютер → двічі клацніть диск « C: » → двічі клацніть « Windows » → двічі клацніть « Microsoft.NET » → двічі клацніть « Framework » → Всередині цієї папки будуть папки, наприклад «v1.0.3705» та / або "v2.0.50727" та / або "v3.5" та / або "v4.0.30319".

Ваша остання версія .NET знаходитиметься в папці з найвищим v номером, тому, якщо доступна версія v4.0.30319, яка б містила вашу останню рамку .NET. Однак v4.0.30319 не означає, що у вас є .NET Framework версії 4.0. V4.0.30319 є вашою версією компілятора Visual C #, тому для пошуку версії .NET Framework виконайте наступне.

Перейдіть до командного рядка та виконайте цей шлях:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 (або будь-яка папка з найвищим v номером)

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> csc.exe

Вихід:

Microsoft (R) Visual C # Compiler версія 4.0.30319.17929 для Microsoft (R) .NET Framework 4.5 Авторські права (C) Microsoft Corporation. Всі права захищені.

Приклад нижче:

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


2
Досить добре, але вихід відрізняється принаймні на моєму сервері - повідомлення "для" не було включено: lh4.googleusercontent.com/-p7Fu5GDj0cg/UywSqPTdQjI/AAAAAAAAALQ/…
Nenotlep

2
змінити тип каталогів : cd C:\Windows\Microsoft.NET\Framework\v4.0.30319а потім ввести csc.exe, сподівання допоможе комусь.
shaijut

1
Це в основному Ефективно, коли ви входили через обмежений обліковий запис користувача.
Rzassar

10

Ця відповідь стосується лише .NET Core!

Набравши dotnet --versionу вибраному вами терміналі, буде роздрукована версія .NET Core SDK, що використовується.

Докладніше про dotnetкоманду тут .


15
Це стосується лише .NET Core
Суніл

9

Для встановленої версії рамки вона змінюється залежно від того, які пакети послуг та виправлення ви встановили. Погляньте на цю сторінку MSDN для отримання більш детальної інформації. Він пропонує шукати, %systemroot%\Microsoft.NET\Frameworkщоб отримати версію.

Environment.Version програмно надасть вам версію CLR.

Зауважте, що це версія CLR, і не обов'язково така сама, як остання версія встановленої вами рамки (.NET 3.0 і 3.5 використовують v2 CLR).


Environment.Version, здається, надає версію програми. Скажімо, від LinqPad я хочу знайти .NET версію, на яку він працює, і це дає мені не версію .NET, а версію LinqPad
Naomi

@Naomi: ні, це дає версію CLR. З документів: "Отримує об'єкт Version, який описує основні, другорядні номери, збірки та версії загальної мови виконання". .
adrianbanks

Що я повинен бачити в цьому об’єкті? Я бачу 2.0.50727.5472 2 Незначні 0 Збірка 50727 Редакція 5472 МайорРевізія 0 Маловажна Редакція 5472, яка мені не схожа на час виконання версії CLR
Наомі

Я завантажив останню версію LinqPad і тепер я отримую 4.0.30319.18052 за версію. Попередня версія націляла версію .NET 3.5. Отже, я все ще трохи розгублений - чи справді це версія CLR?
Наомі

1
@Naomi: Так, це відображає версію CLR. 2.0.50727.5472 - це версія .Net 2.0 CLR, яка також використовується для .Net 3.0 та 3.5. 4.0.30319.18052 - це .Net 4.0, який має інший номер версії.
adrianbanks

8

MSDN детально описує це тут про те, як перевірити це з реєстру:

Пошук версій .NET Framework шляхом перегляду реєстру (.NET Framework 1-4)

  1. У меню "Пуск" виберіть "Запустити".
  2. У полі Відкрити введіть regedit.exe. Щоб запустити regedit.exe, ви повинні мати адміністративні дані.
  3. У Редакторі реєстру відкрийте такий підрозділ:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP

Встановлені версії вказані під підрозділом NDP. Номер версії зберігається у записі Версія. Для .NET Framework 4 запис версії знаходиться під підрозділом Client або Full (під NDP) або під обома підрозділами.

Пошук версій .NET Framework шляхом перегляду реєстру (.NET Framework 4.5 та новіших версій)

  1. У меню "Пуск" виберіть "Запустити".
  2. У полі Відкрити введіть regedit.exe. Щоб запустити regedit.exe, ви повинні мати адміністративні дані.
  3. У Редакторі реєстру відкрийте такий підрозділ:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full

Зауважте, що шлях до повного підрозділу включає підрозділ Net Framework, а не .NET Framework

Перевірте значення DWORD з назвою Release. Існування випуску DWORD вказує на те, що на цьому комп’ютері встановлено .NET Framework 4.5 або новішої версії.

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

Примітка : Останній рядок у наведеному вище знімку, який отримав відрізані цифри On all other OS versions: 461310. Я спробував мій рівень, щоб уникнути зрізання інформації під час зйомки екрана, але таблиця була занадто великою.


6

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

cd %systemroot%\Microsoft.NET\Framework

dir /A:D

8
Не рекомендується, оскільки це, можливо, вводить в оману. Якщо ви оновили 4.0 => 4.5.2, каталог може відображати лише v4.0.30319. Дивіться приклад Сунімату Калураччі.
Діна

6

Просто введіть у командному рядку наступне:

dir /b /ad /o-n %systemroot%\Microsoft.NET\Framework\v?.*

Ваша версія dotnet відображатиметься як найбільше число.


1
Він відображає всі версії до 4.0, але, наприклад, не 4.5.
pinowthebird

4

Щоб просто отримати встановлену версію (и) в командному рядку, я рекомендую використовувати net-version .

  • Це просто один двійковий .
  • Він використовує вказівки, надані моїм Microsoft для отримання інформації про версію.
  • Він не вимагає встановлення SDK.
  • Або командний рядок Visual Studio.
  • Це не вимагає, щоб ви використовували regedit і шукали ключі реєстру самостійно. Ви навіть можете передавати висновок в інструмент командного рядка, якщо вам потрібно.

Вихідний код доступний на github.com

Повне розкриття: цей інструмент я створив сам із розчарування.


Якщо той (неповний) набір інформації про версію вам достатньо хороший, вам більше сил.
Дан Еспарза

@Shiva Ви вказуєте, що ви думаєте, що ця команда показує все, і я з повагою не згоден з вами. Перегляньте посилання з рекомендаціями, наданими Microsoft. Наприклад: у вашому запиті не встановлено .NET 4.6.1. Крім того, це означає, що у мене встановлено "CDF", що не є .NET-рамковою версією.
Дан Еспарза

4

Якщо ви робите це досить часто (як це я роблю), ви можете створити ярлик на робочому столі наступним чином:

  1. Клацніть правою кнопкою миші на робочому столі та виберіть НовийЯрлик .
  2. У поле розташування вставте цей рядок: powershell.exe -noexit -command "gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | gp -name Version,Release -EA 0 | where { $_.PSChildName -match '^(?!S)\p{L}'} | select PSChildName, Version, Release"(це з допису Біного Антонія ).
  3. Натисніть Далі . Дайте ім'я швидкого доступу і закінчіть .

(ПРИМІТКА. Я не впевнений, чи працює це для 4.5, але я можу підтвердити, що він працює для 4.6 та версій до 4.5.)


Версії 1.0 та 1.1 не відображаються в ключі настройки NET Framework , хоча вони існують у папці% systemroot% \ Microsoft.NET \ Framework \.
Саміс

4

Ось сценарій Power Shell, який я використав, посилаючись на:

https://stackoverflow.com/a/3495491/148657

$Lookup = @{
    378389 = [version]'4.5'
    378675 = [version]'4.5.1'
    378758 = [version]'4.5.1'
    379893 = [version]'4.5.2'
    393295 = [version]'4.6'
    393297 = [version]'4.6'
    394254 = [version]'4.6.1'
    394271 = [version]'4.6.1'
    394802 = [version]'4.6.2'
    394806 = [version]'4.6.2'
    460798 = [version]'4.7'
    460805 = [version]'4.7'
    461308 = [version]'4.7.1'
    461310 = [version]'4.7.1'
    461808 = [version]'4.7.2'
    461814 = [version]'4.7.2'
    528040 = [version]'4.8'
    528049 = [version]'4.8'
}

# For One True framework (latest .NET 4x), change the Where-Oject match 
# to PSChildName -eq "Full":
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
  Get-ItemProperty -name Version, Release -EA 0 |
  Where-Object { $_.PSChildName -match '^(?!S)\p{L}'} |
  Select-Object @{name = ".NET Framework"; expression = {$_.PSChildName}}, 
@{name = "Product"; expression = {$Lookup[$_.Release]}}, 
Version, Release

Вищеописаний сценарій використовує реєстр і дає нам номер оновлення Windows разом з .Net Framework, встановленим на машині.

Довідка: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#to-find-net-framework-versions-by- запит-реєстр-в-коді-net-Framework-45 і пізніші

Ось результати для одного і того ж при запуску цього сценарію на двох різних машинах

  1. Де вже встановлено .NET 4.7.2:

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

  1. Де .NET 4.7.2 не встановлено:

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


3

Боже мій, стільки безладу знайти версію встановленого .net Framework?

Windows> Пошук> Інсталятор Visual Studio> для встановленої версії VS, торкніться опції Додатково> Змінити> Окремі компоненти та перегляньте її там:

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



1

clrverє відмінним. Просто виконайте його у підказці .NET, і він перелічить усі доступні версії фреймворку.


3
Цей інструмент потребує встановлення не тільки .NET Framework, а й Visual Studio. ОП вказувало, що Visual Studio може бути не встановлено.
Дан Еспарза

І він не показує всіх (або навіть більшості) версій. Для мого ПК Win7 показано лише V2.0 та 4.0, але деякі з інших методів вище також показують версії: 3.0, 3.5, 4.5, 4.5.1, 4.5.2, 4.6.1 та 4.7.
Zeek2

1
@Zeek clrverпоказує встановлені .net runtime (s) , якими можна поділитися між .net версіями . Див. Як: Визначити, які версії .NET Framework встановлені та визначити версію .NET, яку ви запускаєте (2.0, 4.5, 4.5.1 або 4.5.2)
samis

1

Для всіх, хто працює з Windows 10 1607 та шукає .net 4.7 . Ігноруйте все вищесказане.

Його немає в папці Реєстр , C: \ Windows \ Microsoft.NET або в списку встановлених програм або на дисплеї WMIC того самого списку.

Шукайте "встановлені оновлення" KB3186568.


1
Це в реєстрі, як це підтверджено документами Microsoft . HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full- Releaseзначення буде 460798для 4,7 у W10 1607.
Річард Демінг

Це не. Клавіша "Повний" навіть не існує.
skrie

1
Це є, і це робить. Я біжу 1607, і зараз дивлюсь на Fullключ!
Річард Демінг

0

На корпорацію Майкрософт:

Get-ChildItem "hklm:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" | Get-ItemPropertyValue -Name Release | % { $_ -ge 394802 }

Дивіться таблицю за цим посиланням, щоб отримати значення DWORD для пошуку конкретних версій:

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#ps_a


0

Якщо ви розробляєте якийсь додаток .Net (наприклад, веб-додаток), ви можете зробити 1 рядок коду помилки (наприклад, викликати неправильне ім’я функції) та перезавантажити сторінку, буде показана версія .Netвведіть тут опис зображення


Напевно, не найчистіший спосіб, але дійсно варіант, про який я зовсім забув. Простий GACUTIL /l ?у вашій (розробницькій) повноваженнях дає точно так само.
В - Ріан

-1

Існує простіший спосіб отримати точну версію .NET версії, встановленої на вашій машині, із запиту cmd. Просто дотримуйтесь наступних інструкцій;

Відкрийте командний рядок (тобто Windows + R → наберіть “cmd”) та введіть таку команду в одному рядку:% windir% \ Microsoft.NET \ FrameWork, а потім перейдіть до каталогу із останнім номером версії.

Зверніться до http://dotnettec.com/check-dot-net-framework-version/


Я отримую цю помилку, намагаючись слідкувати за вашою відповіддю:'C:\Windows\Microsoft.NET\FrameWork' is not recognized as an internal or external command, operable program or batch file.
pavjel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.