Как узнать версию visual studio
Перейти к содержимому

Как узнать версию visual studio

  • автор:

Управление версиями языка C#

Компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта. Visual Studio не предоставляет пользовательский интерфейс для изменения этого значения, но его можно изменить, отредактировав файл CSPROJ. Выбор значения по умолчанию гарантирует, что вы используете последнюю версию языка, совместимую с вашей целевой платформой. Вы получите преимущество в виде доступа к последним функциям языка, совместимым с целевым объектом проекта. Этот вариант по умолчанию также гарантирует, что вы не будете использовать язык, который требует такие типы или поведение во время выполнения, которые недоступны в целевой платформе. Выбор более новой версии языка, чем значение по умолчанию, может усложнить диагностику ошибок во время компиляции и выполнения.

C# 12 поддерживается только в .NET 8 и более новых версиях. C# 11 поддерживается только в .NET 7 и более новых версиях. C# 10 поддерживается только в .NET 6 и более новых версиях.

Проверьте страницу совместимости платформы Visual Studio, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio. Ознакомьтесь со страницей совместимости Visual Studio для Mac платформы, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio для Mac. Проверьте страницу Mono для C# для совместимости Mono с версиями C# .

Defaults

Компилятор определяет значение по умолчанию на основе следующих правил:

Назначение Версия Версия языка C# по умолчанию
.NET 8.x C# 12
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.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

Если проект предназначен для preview платформы с соответствующей версией языка предварительной версии, используется языковая версия предварительной версии. Вы можете использовать новейшие возможности в этой предварительной версии в любой среде, не затрагивая проекты, предназначенные для выпущенной версии .NET Core.

Новый шаблон проекта для Visual Studio 2017 добавил latest запись в новые файлы проекта. При обновлении целевой платформы для этих проектов параметр может переопределить значение по умолчанию для новой целевой платформы. Не забудьте удалить latest файл проекта, чтобы убедиться, что проект использует рекомендуемую версию компилятора для целевой платформы. Вы можете обновить целевую платформу, чтобы получить доступ к новым языковым функциям.

Переопределите значение по умолчанию

Если необходимо явно указать версию C#, это можно сделать несколькими способами:

  • Вручную изменить файл проекта.
  • задание языковой версии для нескольких проектов в подкаталоге;
  • Настройте параметр компилятора LangVersion.

Языковая версия в Visual Studio отображается на странице свойств проекта. На вкладке «Сборка » на панели «Дополнительно» отображается выбранная версия.

Чтобы узнать, какую версию языка вы используете в данный момент, поставьте #error version (с учетом регистра) в коде. Это позволяет компилятору вывести ошибку CS8304 с сообщением, содержащим сведения об используемой версии компилятора и текущей выбранной версии языка. Дополнительные сведения см. в статье #error (справочник по C#).

Изменение файла проекта

Версию языка можно задать в файле проекта. Например, если доступ к предварительной версии функций должен быть задан явным образом, можно добавить следующий элемент:

 preview  

Значение preview использует последнюю предварительную версию языка C#, которую поддерживает компилятор.

Настройка нескольких проектов

Чтобы настроить несколько проектов, можно создать файл Directory.Build.props , как правило, в каталоге решения, который содержит элемент. Добавьте следующий параметр в файл Directory.Build.props :

  preview   

Сборки во всех подкаталогах каталога, содержащего этот файл, теперь используют предварительную версию C#. Дополнительные сведения см. в статье Настройка сборки.

Справочник по версиям языка C#

В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.

Значение Значение
preview Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии.
latest Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии).
latestMajor
или default
Компилятор принимает синтаксис из последней основной версии компилятора.
12.0 Компилятор принимает только синтаксис, включенный в C# 12 или ниже.
11.0 Компилятор принимает только синтаксис, включенный в C# 11 или ниже.
10.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий.
9.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий.
8.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии.
7.3 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии.
7.2 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии.
7.1 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии.
7 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии.
6 Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии.
5 Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии.
4 Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии.
3 Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии.
ISO-2
или 2
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0).
ISO-1
или 1
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2).

Указание LangVersion со значением отличается от пропуска параметра LangVersion . default Указание default последней версии языка, который поддерживает компилятор, без учета целевой платформы. Например, создание проекта, предназначенного для .NET 6 из текущей версии Visual Studio 2022, использует C# 10, если LangVersion не указан, но использует C# 11, если LangVersion имеет значение default .

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

/VERSION (Сведения о версии)

major и minor
Номер версии, который требуется в заголовке EXE или DLL-файла.

Замечания

Параметр /VERSION сообщает компоновщику поместить номер версии в заголовок EXE или DLL-файла. Используется DUMPBIN /HEADERS для просмотра поля OPTIONAL HEADER VALUES версии образа для просмотра эффекта /VERSION .

minor Аргументы major — десятичные числа в диапазоне от 0 до 65 535. По умолчанию используется версия 0.0 .

Сведения, указанные с /VERSION указанием, не влияют на сведения о версии, которые отображаются для приложения при просмотре его свойств в проводник. Эта информация о версии поступает из файла ресурсов, который используется для сборки приложения. Дополнительные сведения см. в редакторе сведений о версиях.

Другим способом вставки номера версии является VERSION инструкция определения модуля.

Задание данного параметра компоновщика в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
  2. Выберите страницу свойств>компоновщика >конфигурации «Общие свойства».
  3. Измените свойство Version .

Задание данного параметра компоновщика программным способом

  • См. раздел Version.

Как узнать версию visual studio

Есть установленная Visual Studio 2005. Как узнать какая это версия (standart, proffesional и т.д.)?

Как узнать версию установленной Visual Studio?

От: Аноним
Дата: 20.02.06 15:02
Оценка:

Вы можете использовать свойства DTE.Version и DTE.Edition для получения нужной Вам информации.

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Как узнать версию установленной Visual Studio?

От: Аноним
Дата: 20.02.06 21:56
Оценка:

А где глянуть эти свойства DTE.Version и DTE.Edition?

Как узнать версию установленной Visual Studio?

От: Аноним
Дата: 21.02.06 08:36
Оценка:
 System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0", false); EnvDTE._DTE dte = System.Activator.CreateInstance(type, true) as EnvDTE._DTE; if(dte != null) < string version = dte.Version; string edition = dte.Edition; >

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Как узнать версию установленной Visual Studio?

От: Аноним
Дата: 21.02.06 08:42
Оценка:

А если Вы имеете ввиду, что хотите посмотреть _глазами_, то Help -> About и на картинке с логотипом написано


Гайдар Магдануров
[email]mailto:gaidar.magdanurov@gmail.com[/email] | Блог | Сайт
Difficult I do now, impossible will take a while.

Практическое руководство. Определение установленных версий платформы .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 установлены:

  • https://github.com/jmalarcon/DotNetVersions Программа командной строки .NET Framework 2.0.
  • https://github.com/EliteLoser/DotNetVersionLister Модуль PowerShell 2.0.

Сведения об обнаружении установленных обновлений для каждой версии платформа .NET Framework см. в разделе «Практическое руководство. Определение установленных обновлений платформа .NET Framework».

Определение реализации и версии .NET, в которой работает приложение

Для запроса реализации и версии .NET, в которой работает ваше приложение, можно использовать свойство RuntimeInformation.FrameworkDescription. Если приложение работает в .NET Framework, выходные данные будут выглядеть примерно так:

.NET Framework 4.8.4250.0 

Если же приложение работает в .NET Core или .NET 5+, выходные данные будут выглядеть следующим образом:

.NET Core 3.1.9 .NET 5.0.0 

Обнаружение .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 г. и Windows Server версии 1803: 461808
Во всех операционных системах Windows, отличных от Windows 10 апреля 2018 г. с обновлением и Windows Server версии 1803: 461814
.NET Framework 4.8 В обновление Windows 10 за май 2019 г. и Windows 10 ноября 2019 г. с обновлением: 528040
Обновление Windows 10 мая 2020 г., обновление за октябрь 2020 г., обновление за май 2021 г., обновление за ноябрь 2021 г. и обновление 2022 г.: 528372
В Windows 11 и Windows Server 2022: 528449
Во всех других операционных системах Windows (включая другие операционные системы Windows 10): 528049
платформа .NET Framework 4.8.1 Обновление Windows 11 2022 и Windows 11 2023: 533320
Все остальные операционные системы Windows: 533325

Минимальная версия

Чтобы определить, присутствует ли минимальная версия .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
платформа .NET Framework 4.8.1 533320

Использование редактора реестра

Registry entry for .NET Framework 4.5

  1. В меню Пуск выберите Выполнить, введите regedit и нажмите кнопку ОК. (Для запуска программы regedit необходимы учетные данные администратора.)
  2. В редакторе реестра откройте следующий подраздел: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Если подраздел Full отсутствует, платформа .NET Framework 4.5 или более поздней версии не установлена.
  3. Проверьте значение 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 в противном случае.

(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 394802 

Отправка запросов в реестр с помощью кода

  1. Используйте методы 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.

В следующем примере проверка значение записи выпуска в реестре для поиска версий платформа .NET Framework 4.5-4.8.1, установленных.

Добавьте директиву using Microsoft.Win32 или Imports Microsoft.Win32 в начало файла кода, если вы еще этого не сделали.

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: "); > 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 >= 533320) return "4.8.1 or later"; if (releaseKey >= 528040) return "4.8"; 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"; > 
Private Sub Get45PlusFromRegistry() Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey) If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then Console.WriteLine($".NET Framework Version: ") Else Console.WriteLine(".NET Framework Version 4.5 or later is not detected.") End If End Using End Sub ' Checking the version using >= enables forward compatibility. Private Function CheckFor45PlusVersion(releaseKey As Integer) As String If releaseKey >= 533320 Then Return "4.8.1 or later" ElseIf releaseKey >= 528040 Then Return "4.8" ElseIf releaseKey >= 461808 Then Return "4.7.2" ElseIf releaseKey >= 461308 Then Return "4.7.1" ElseIf releaseKey >= 460798 Then Return "4.7" ElseIf releaseKey >= 394802 Then Return "4.6.2" ElseIf releaseKey >= 394254 Then Return "4.6.1" ElseIf releaseKey >= 393295 Then Return "4.6" ElseIf releaseKey >= 379893 Then Return "4.5.2" ElseIf releaseKey >= 378675 Then Return "4.5.1" ElseIf releaseKey >= 378389 Then Return "4.5" End If ' 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" End Function 

Этот пример выводит данные, подобные следующим:

.NET Framework Version: 4.6.1 

Запрос реестра с помощью кода PowerShell

В следующем примере PowerShell используется для проверка значение записи выпуска в реестре для поиска версий платформа .NET Framework 4.5-4.8.1, установленных:

$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release switch ($release) < < $_ -ge 533320 > < $version = '4.8.1 or later'; break > < $_ -ge 528040 > < $version = '4.8'; break > < $_ -ge 461808 > < $version = '4.7.2'; break > < $_ -ge 461308 > < $version = '4.7.1'; break > < $_ -ge 460798 > < $version = '4.7'; break > < $_ -ge 394802 > < $version = '4.6.2'; break > < $_ -ge 394254 > < $version = '4.6.1'; break > < $_ -ge 393295 > < $version = '4.6'; break > < $_ -ge 379893 > < $version = '4.5.2'; break > < $_ -ge 378675 > < $version = '4.5.1'; break > < $_ -ge 378389 > < $version = '4.5'; break >default < $version = $null; break >> if ($version) < Write-Host -Object ".NET Framework Version: $version" >else

В этом примере применяются рекомендации для проверки версии:

  • Проверяется, имеет ли параметр 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 отличается от остальных.

Использование редактора реестра (более ранние версии платформы)

The registry entry for .NET Framework 3.5.

  1. В меню Пуск выберите Выполнить, введите regedit и нажмите кнопку ОК. Для запуска программы regedit необходимы учетные данные администратора.
  2. Откройте подраздел, соответствующий версии, которую необходимо проверить. Используйте таблицу в разделе Обнаружение .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:

// Open the registry key for the .NET Framework entry. using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")) < foreach (var versionKeyName in ndpKey.GetSubKeyNames()) < // Skip .NET Framework 4.5 version information. if (versionKeyName == "v4") < continue; >if (versionKeyName.StartsWith("v")) < RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); // Get the .NET Framework version value. var name = (string)versionKey.GetValue("Version", ""); // Get the service pack (SP) number. var sp = versionKey.GetValue("SP", "").ToString(); // Get the installation flag. var install = versionKey.GetValue("Install", "").ToString(); if (string.IsNullOrEmpty(install)) < // No install info; it must be in a child subkey. Console.WriteLine($""); > else if (install == "1") < // Install = 1 means the version is installed. if (!string.IsNullOrEmpty(sp)) < Console.WriteLine($" SP"); > else < Console.WriteLine($""); > > if (!string.IsNullOrEmpty(name)) < continue; >// else print out info from subkeys. // Iterate through the subkeys of the version subkey. foreach (var subKeyName in versionKey.GetSubKeyNames()) < RegistryKey subKey = versionKey.OpenSubKey(subKeyName); name = (string)subKey.GetValue("Version", ""); if (!string.IsNullOrEmpty(name)) sp = subKey.GetValue("SP", "").ToString(); install = subKey.GetValue("Install", "").ToString(); if (string.IsNullOrEmpty(install)) < // No install info; it must be later. Console.WriteLine($" "); > else if (install == "1") < if (!string.IsNullOrEmpty(sp)) < Console.WriteLine($"  SP"); > else < Console.WriteLine($" "); > > > > > > 
' Opens the registry key for the .NET Framework entry. Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\") For Each versionKeyName In ndpKey.GetSubKeyNames() ' Skip .NET Framework 4.5 and later. If versionKeyName = "v4" Then Continue For If versionKeyName.StartsWith("v") Then Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName) ' Get the .NET Framework version value. Dim name = DirectCast(versionKey.GetValue("Version", ""), String) ' Get the service pack (SP) number. Dim sp = versionKey.GetValue("SP", "").ToString() Dim install = versionKey.GetValue("Install", "").ToString() If String.IsNullOrEmpty(install) Then ' No install info; it must be in a child subkey. Console.WriteLine($" ") ElseIf install = "1" Then If Not String.IsNullOrEmpty(sp) Then Console.WriteLine($"  SP") Else Console.WriteLine($" ") End If End If If Not String.IsNullOrEmpty(name) Then Continue For End If For Each subKeyName In versionKey.GetSubKeyNames() Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName) name = DirectCast(subKey.GetValue("Version", ""), String) If Not String.IsNullOrEmpty(name) Then sp = subKey.GetValue("SP", "").ToString() End If install = subKey.GetValue("Install", "").ToString() If String.IsNullOrEmpty(install) Then ' No install info; it must be later. Console.WriteLine($" ") ElseIf install = "1" Then If Not String.IsNullOrEmpty(sp) Then Console.WriteLine($"  SP") Else Console.WriteLine($" ") End If End If Next End If Next End Using 

В этом примере отобразятся выходные данные, аналогичные следующим:

v2.0.50727 2.0.50727.4927 SP2 v3.0 3.0.30729.4926 SP2 v3.5 3.5.30729.4926 SP1 v4.0 Client 4.0.0.0 

Запрос реестра с помощью PowerShell (более ранних версий платформы)

В следующем примере PowerShell используется для проверка значения записи выпуска в реестре для поиска версий платформа .NET Framework 1-4, установленных:

Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' | Where-Object < ($_.PSChildName -ne "v4") -and ($_.PSChildName -like 'v*') >| ForEach-Object < $name = $_.Version $sp = $_.SP $install = $_.Install if (-not $install) < Write-Host -Object "$($_.PSChildName) $($name)" >elseif ($install -eq '1') < if (-not $sp) < Write-Host -Object "$($_.PSChildName) $($name)" >else < Write-Host -Object "$($_.PSChildName) $($name) SP$($sp)" >> if (-not $name) < $parentName = $_.PSChildName Get-ChildItem -LiteralPath $_.PSPath | Where-Object < if ($_.Property -contains 'Version') < $name = Get-ItemPropertyValue -Path $_.PSPath -Name Version >if ($name -and ($_.Property -contains 'SP')) < $sp = Get-ItemPropertyValue -Path $_.PSPath -Name SP >if ($_.Property -contains 'Install') < $install = Get-ItemPropertyValue -Path $_.PSPath -Name Install >if (-not $install) < Write-Host -Object " $($parentName) $($name)" >elseif ($install -eq '1') < if (-not $sp) < Write-Host -Object " $($_.PSChildName) $($name)" >else < Write-Host -Object " $($_.PSChildName) $($name) SP$($sp)" >> > > > 

Поиск версий CLR

.NET Framework CLR, установленный с .NET Framework, имеет отдельную версию. Есть два способа определить версию среды выполнения .NET Framework CLR:

    Инструмент Clrver.exe Для определения версий среды CLR, установленных на компьютере, можно использовать средство CLR Version (Clrver.exe). Откройте Командную строку разработчика или PowerShell для разработчиков в Visual Studio и введите clrver . Образец вывода:

Versions installed on the machine: v2.0.50727 v4.0.30319 

Важно! Для .NET Framework 4.5 и более поздних версий не следует использовать свойство Environment.Version для определения версии среды CLR. Вместо этого выполните запрос к реестру, как описано в разделе Обнаружение .NET Framework 4.5 и более поздних версий.

  1. Выполните запрос к свойству 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.
  2. Получив объект Version, выполните к нему запрос:
    • Чтобы получить идентификатор основного выпуска (например, 4 в случае версии 4.0), используйте свойство Version.Major.
    • Чтобы получить идентификатор дополнительной версии (например, 0 в случае версии 4.0), используйте свойство Version.Minor.
    • Чтобы получить всю строку версии (например, 4.0.30319.18010), используйте метод Version.ToString. Он возвращает одно значение, соответствующее версии среды выполнения, в которой выполняется код. Он не возвращает версий сборок или других версий среды выполнения, которые установлены на компьютере.

В следующем примере свойство Environment.Version используется для получения сведений о версии среды CLR:

Console.WriteLine($"Version: "); 
Console.WriteLine($"Version: ") 

В этом примере отобразятся выходные данные, аналогичные следующим:

Version: 4.0.30319.18010 

См. также

  • Практическое руководство. Определение установленных обновлений платформа .NET Framework
  • Устранение неполадок. Определение версий и пакетов обновления платформа .NET Framework
  • Установка .NET Framework для разработчиков
  • Версии и зависимости платформы .NET Framework

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *