Практическое руководство. Определение установленных версий платформы .NET Framework
На компьютере можно установить и запустить несколько версий платформы .NET Framework. При разработке или развертывании приложения могут потребоваться сведения о том, какие версии .NET Framework установлены на компьютере пользователя. Реестр содержит список версий .NET Framework, установленных на компьютере.
Эта статья относится к .NET Framework. Чтобы определить, какие пакеты SDK и среды выполнения .NET Core и .NET 5+ установлены, см. раздел Как проверить, что .NET уже установлен.
Платформа .NET Framework состоит из двух основных компонентов, версии которым присваиваются отдельно:
набор сборок, которые являются коллекциями типов и ресурсов, обеспечивающих функции приложений (.NET Framework и сборкам назначается один номер версии); Например, версии .NET Framework включают в себя 4.5, 4.6.1 и 4.7.2.
среда CLR, которая выполняет код приложения и управляет им. Одна версия среды CLR обычно поддерживает несколько версий .NET Framework. Например, CLR версии 4.0.30319.xxxxx, где xxxxx меньше 42000, поддерживает .NET Framework версий с 4 по 4.5.2. Версия CLR не менее 4.0.30319.42000 поддерживает версии .NET Framework начиная с .NET Framework 4.6.
Средства, поддерживаемые сообществом, помогают определить, какие версии .NET Framework установлены:
Программа командной строки .NET Framework 2.0.
Модуль PowerShell 2.0.
Сведения об определении установленных обновлений для каждой версии платформы .NET Framework см. в статье Практическое руководство. Определение установленных обновлений платформы .NET Framework.
Определение реализации и версии .NET, в которой работает приложение
Для запроса реализации и версии .NET, в которой работает ваше приложение, можно использовать свойство RuntimeInformation.FrameworkDescription. Если приложение работает в .NET Framework, выходные данные будут выглядеть примерно так:
Если же приложение работает в .NET Core или .NET 5+, выходные данные будут выглядеть следующим образом:
Обнаружение .NET Framework 4.5 и более поздних версий
Версия .NET Framework (4.5 и более поздние), установленная на компьютере, указана в реестре в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Если отсутствует подраздел Full, то .NET Framework 4.5 или более поздней версии не установлен.
Подраздел NET Framework Setup в пути реестра не начинается с точки.
Значение Release REG_DWORD в реестре представляет установленную версию .NET Framework.
Версия платформы .NET Framework | Значение Release |
---|---|
.NET Framework 4,5 | Все версии операционной системы Windows: 378389 |
.NET Framework 4.5.1 | Windows 8.1 и Windows Server 2012 R2: 378675 Все другие версии операционной системы Windows: 378758 |
.NET Framework 4.5.2 | Все версии операционной системы Windows: 379893 |
.NET Framework 4.6 | Windows 10: 393295 Все другие версии операционной системы Windows: 393297 |
.NET Framework 4.6.1 | Windows 10 с ноябрьским обновлением: 394254 Все остальные версии операционной системы Windows (включая Windows 10): 394271 |
.NET Framework 4.6.2 | В юбилейном обновлении Windows 10 и Windows Server 2016: 394802 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 394806 |
.NET Framework 4.7 | Windows 10 Creators Update: 460798 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 460805 |
.NET Framework 4.7.1 | Windows 10 Fall Creators Update и Windows Server версии 1709: 461308 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 461310 |
.NET Framework 4.7.2 | Windows 10 за апрель 2018 г. Update и Windows Server версии 1803: 461808 Все остальные операционные системы, кроме Windows 10 с обновлением за апрель 2018 г. и Windows Server версии 1803: 461814 |
.NET Framework 4.8 | Обновление Windows 10 за май 2019 года и обновление Windows 10 за ноябрь 2019 года: 528040 Обновление Windows 10 за май 2020 года и обновление Windows 10 за октябрь 2020 года: 528372 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 528049 |
Минимальная версия
Чтобы определить, присутствует ли минимальная версия .NET Framework, проверьте значение Release REG_DWORD, которое больше или равно соответствующему значению, указанному в следующей таблице. Например, если приложение работает в .NET Framework 4.8 или более поздней версии, проверьте, является ли значение REG_DWORD Release большим или равным 528040.
Версия платформы .NET Framework | Минимальное значение |
---|---|
.NET Framework 4,5 | 378389 |
.NET Framework 4.5.1 | 378675 |
.NET Framework 4.5.2 | 379893 |
.NET Framework 4.6 | 393295 |
.NET Framework 4.6.1 | 394254 |
.NET Framework 4.6.2 | 394802 |
.NET Framework 4.7 | 460798 |
.NET Framework 4.7.1 | 461308 |
.NET Framework 4.7.2 | 461808 |
.NET Framework 4.8 | 528040 |
Использование редактора реестра
В меню Пуск выберите Выполнить, введите regedit и нажмите кнопку ОК.
(Для запуска программы regedit необходимы учетные данные администратора.)
В редакторе реестра откройте следующий подраздел: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Если подраздел Full отсутствует, платформа .NET Framework 4.5 или более поздней версии не установлена.
Проверьте значение REG_DWORD с именем Release. Если оно имеется, платформа .NET Framework 4.5 или более поздней версии установлена. Это значение соответствует определенной версии .NET Framework. Например, на приведенном ниже рисунке значение параметра Release равно 528040, что является разделом выпуска для .NET Framework 4.8.
Использование PowerShell для проверки минимальной версии
Используйте команды PowerShell для проверки значения параметра Release в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.
В приведенных ниже примерах значение Release проверяется с целью определить, установлена ли версия 4.6.2 или более поздняя версия .NET Framework. Код возвращает значение True , если одна из таких версий установлена, и False в противном случае.
Отправка запросов в реестр с помощью кода
Используйте методы RegistryKey.OpenBaseKey и RegistryKey.OpenSubKey для доступа к подразделу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full в реестре Windows.
Если вы используете 32-разрядное приложение в 64-разрядной версии Windows, пути реестра будут отличаться от указанных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Например, подразделом реестра для .NET Framework 4.5 является HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.
Проверьте значение REG_DWORD Release, чтобы определить установленную версию. Для обеспечения совместимости с последующими версиями значение должно быть больше или равно значению, указанному в таблице версий .NET Framework.
В следующем примере проверяется значение Release в реестре для поиска установленных версий .NET Framework 4.5–4.8.
Этот пример выводит данные, подобные следующим:
В этом примере применяются рекомендации для проверки версии:
- Проверяется, имеет ли параметр Release значение, большее или равное значению известных разделов выпуска.
- Проверка выполняется с самой последней до самой ранней версии.
Обнаружение .NET Framework с 1.0 по 4.0
Каждая версия .NET Framework с 1.1 по 4.0 указана в виде подраздела в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP. В следующей таблице перечислены пути к каждой версии .NET Framework. Для большинства версий существует значение REG_DWORD Install, равное 1 , чтобы указать, что эта версия установлена. В этих подразделах также имеется значение REG_SZ Version, содержащее строку версии.
Подраздел NET Framework Setup в пути реестра не начинается с точки.
Версия платформы | Подраздел реестра | Значение |
---|---|---|
1.0 | HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 | REG_SZ Install равно 1 |
1.1 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 | REG_DWORD Install равно 1 |
2.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 | REG_DWORD Install равно 1 |
3.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup | Значение REG_DWORD InstallSuccess равно 1 |
3.5 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 | REG_DWORD Install равно 1 |
Клиентский профиль 4.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client | REG_DWORD Install равно 1 |
Полный профиль 4.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full | REG_DWORD Install равно 1 |
Если вы используете 32-разрядное приложение в 64-разрядной версии Windows, пути реестра будут отличаться от указанных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Например, подразделом реестра для .NET Framework 3.5 является HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
Обратите внимание, что путь реестра к подразделу .NET Framework 1.0 отличается от остальных.
Использование редактора реестра (более ранние версии платформы)
В меню Пуск выберите Выполнить, введите regedit и нажмите кнопку ОК.
Для запуска программы regedit необходимы учетные данные администратора.
Откройте подраздел, соответствующий версии, которую необходимо проверить. Используйте таблицу в разделе Обнаружение .NET Framework с 1.0 по 4.0.
На приведенном ниже рисунке показан подраздел для версии .NET Framework 3.5 вместе со значением Version.
Запрос реестра с помощью кода (более ранние версии платформы)
Используйте класс Microsoft.Win32.RegistryKey для доступа к подразделу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP в реестре Windows.
Если вы используете 32-разрядное приложение в 64-разрядной версии Windows, пути реестра будут отличаться от указанных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Например, подразделом реестра для .NET Framework 3.5 является HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
В следующем примере ищутся установленные версии .NET Framework 1–4:
В этом примере отобразятся выходные данные, аналогичные следующим:
Поиск версий CLR
.NET Framework CLR, установленный с .NET Framework, имеет отдельную версию. Есть два способа определить версию среды выполнения .NET Framework CLR:
Инструмент Clrver.exe
Для определения версий среды CLR, установленных на компьютере, можно использовать средство CLR Version (Clrver.exe). Откройте Командную строку разработчика или PowerShell для разработчиков в Visual Studio и введите clrver .
Пример результатов выполнения:
Класс Environment
Для .NET Framework 4.5 и более поздних версий не следует использовать свойство Environment.Version для определения версии среды CLR. Вместо этого выполните запрос к реестру, как описано в разделе Обнаружение .NET Framework 4.5 и более поздних версий.
Выполните запрос к свойству Environment.Version, чтобы получить объект Version.
Возвращенный объект System.Version указывает версию среды выполнения, в которой в настоящее время выполняется код. Он не содержит версий сборок или других версий среды выполнения, которые установлены на компьютере.
Для платформы .NET Framework версий 4, 4.5, 4.5.1 и 4.5.2 возвращаемый объект Version имеет строковое представление 4.0.30319.xxxxx, где xxxxx меньше 42000. Для .NET Framework 4.6 и более поздних версий оно имеет форму 4.0.30319.42000.
Получив объект Version, выполните к нему запрос:
Чтобы получить идентификатор основного выпуска (например, 4 в случае версии 4.0), используйте свойство Version.Major.
Чтобы получить идентификатор дополнительной версии (например, 0 в случае версии 4.0), используйте свойство Version.Minor.
Чтобы получить всю строку версии (например, 4.0.30319.18010), используйте метод Version.ToString. Он возвращает одно значение, соответствующее версии среды выполнения, в которой выполняется код. Он не возвращает версий сборок или других версий среды выполнения, которые установлены на компьютере.
В следующем примере свойство Environment.Version используется для получения сведений о версии среды CLR:
В этом примере отобразятся выходные данные, аналогичные следующим:
Как узнать версию NET Framework в Windows 10
NET Framework — содержит в себе библиотеки для разработки различных приложений. Это API, который упрощает работу разработчикам в написании кода. Имеются много версий NET Framework 2.0, 3.5, 4.8, которые нужны для запуска игр или программ. Чем ниже версия, тем она старее и нужна для запуска более старых приложений. В определенные моменты, нужно знать какая версия NET Framework установлена или присутствует в системе Windows 10, чтобы её переустановить или установить недостающую.
Через реестр
Нажмите сочетание кнопок Win+R и введите regedit, чтобы открыть редактор реестра. В реестре перейдите по пути:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
- В папке NDP будут представлены сборки NET Framework.
- Раздвиньте список сборки и с правой стороны найдите значение Version.
В моем случае я проверят сборку 4 и мне показало, что версия NET Framework 4.8.
Через PowerShell
Запустите PowerShell от имени администратора и введите следующий апплет:
- Get-ChildItem ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -Recurse | Get-ItemProperty -Name version -EA 0 | Where < $_.PSChildName -Match ‘^(?!S)\p
‘> | Select PSChildName, version
Список установленных версий
Мы также можем узнать какие версии NET Framework установлены в системе Windows. Для этого Microsoft в своей справке рекомендуют воспользоваться скриптом на GitHub. Запустите PowerShell от имени администратора и введите ниже команду для установки скрипта:
- Install-Module -Name DotNetVersionLister -Scope CurrentUser #-Force
- Нажмите Y и Enetr, чтобы установить скрипт.
Далее введите команду, чтобы вывести список установленных версий NET Framework.
- Get-STDotNetVersion
Программа Raymondcc .NET Detector
Raymondcc .NET Detector — программа, которая быстро покажет вам список всех версий NET Framework, установленных и не установленных. Перейдите на официальный сайт и загрузите программу.
- Пароль от архива — raymondcc
Как узнать какие версии .NET Framework установлены на компьютере
09.06.2018
itpro
Windows 10, Windows Server 2012 R2
Комментариев пока нет
В ОС Windows одновременно может быть установлено несколько версий .NET Framework. При установке на компьютере нового приложения, разработанного на .Net, иногда нужно предварительно узнать какие версии и пакеты обновления .Net Framework уже установлены на компьютере пользователя или на сервере. Получить список установленных версий .NET Framework можно разными способами.
- Выводим список установленных версий .NET Framework в командной строке
- Информация об установленных версиях .NET Framework в реестре
- Проверка версии .Net Framework с помощью Powershell
- Утилита .Net Version Detector
- Утилита CLRver.exe
Выводим список установленных версий .NET Framework в командной строке
Все версии .NET Framework устанавливаются в каталоги:
- %SystemRoot%\Microsoft.NET\Framework
- %SystemRoot%\Microsoft.NET\Framework64
Поэтому самый простой способ вывести список установленных версий .Net – открыть данную папку. Каждой версии соответствует отдельный каталог с символов v в начале и номером версии в качестве имени папки. Либо можно вывести список каталогов (версий) .NET Framework в командной строке так:
dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B
Команда выведет все установленные версии кроме 4.5, т.к. .NET Framework 4.5 устанавливается в подкаталог v4.0.xxxxx.
Информация об установленных версиях .NET Framework в реестре
При установке или обновлении любой версии .NET Framework в реестр записывается довольно много полезной информации.
Откройте редактор реестра и перейдите в раздел HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP. В данном разделе содержатся подраздел для каждой установленной в системе версии .NET. Нужная информация содержится в разделе с именем ветки (а для .Net 4.0 и выше в подразделах Client и Full). Нас интересуют следующие параметры реестра:
- Install — флаг установки версии (если равен 1 – данная версия .Net установлена на компьютере);
- Install Path — каталог, в который установлена данная версия .Net;
- Release — номер текущего релиза .Net;
- Version — полный номер версии .Net Framework.
К примеру, в данном примере видно, что на компьютере установлены .NET Framework v2.0.50727, 3.0, 3.5 и 4.0 (релиз 460805).
С помощью следующей таблицы вы можете установить соответствие между номером релиза и версией .NET Framework 4.5 и выше.
Значение DWORD параметра Release | Версия .NET Framework |
378389 | .NET Framework 4.5 |
378675 | NET Framework 4.5.1 на Windows 8.1 / Windows Server 2012 R2 |
378758 | .NET Framework 4.5.1 на Windows 8, Windows 7 SP1, Windows Vista SP2 |
379893 | .NET Framework 4.5.2 |
393273 | .NET Framework 4.6 на Windows 10 |
393297 | .NET Framework 4.6 |
394254 | .NET Framework 4.6.1 на Windows 10 November Update |
394271 | .NET Framework 4.6.1 |
394802 | .NET Framework 4.6.2 на Windows 10 Anniversary Update |
394806 | .NET Framework 4.6.2 |
460798 | .NET Framework 4.7 на Windows 10 Creators Update |
460805 | .NET Framework 4.7 |
461308 | .NET Framework 4.7.1 на Windows 10 Fall Creators Update |
461310 | .NET Framework 4.7.1 |
461808 | .NET Framework 4.7.2 на Windows 10 April 2018 Update |
461814 | .NET Framework 4.7.2 |
Проверка версии .Net Framework с помощью Powershell
Можно получить информацию об установленных версиях и релизах Framework с помощью PowerShell. Эту информацию также можно получить из реестра. Например, выведем информацию о текущем установелнном релизе .NET 4.x можно с помощью командлета Get-ItemProperty (подробнее о работе с записями реестра из PowerShell):
(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release
Утилита .Net Version Detector
Существует сторонняя бесплатная утилита Asoft .Net Version Detector, с помощью которой можно в наглядном и удобном виде получить список установленные версий .NET Framework. Утилита качается с сайта разработчика (http://www.asoft.be/prod_netver.html) и не требует установки. В красивом окошке утилита выведет все установленные на компьютере версии .NET, а также максимальную доступную версию на данный момент.
Довольно удобно, что прямо в программе можно перейти на страницу загрузки различный версий .NET Framework, где можно скачать нужный пакет.
Утилита CLRver.exe
В состав Microsoft Visual Studio входит отдельная утилита CLRver.exe, которая выводит отчет обо всех установленных версиях среды CLR на данном компьютере. Выполните команду CLRver.exe в командной строке и в консоли появится список установленных версии dotNet на компьютере.
Напоследок, в качестве полезной информации отметим, что в серверных ОС начиная с Windows Server 2012, все базовые версии .Net (3.5 и 4.5) является частью системы и устанавливаются в виде отдельного компонента (Установка .NET Framework 3.5 в Windows Server 2016, в Windows Server 2012 R2), а минорные (4.5.1, 4.5.2 и т.д.) устанавливаются уже в виде обновлений через Windows Update или WSUS.
Предыдущая статья Следующая статья