Я знаю, что для более старых версий .NET вы можете определить, установлена ​​ли данная версия, выполнив

https://support.microsoft.com/en-us/kb/318785  

Есть ли официальный метод определения установленного .NET Core?

(И я не имею в виду SDK, я хочу проверить сервер без SDK, чтобы определить, установлен ли на нем DotNetCore.1.0.0-WindowsHosting.exe)

Я вижу

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET Cross-Platform Runtime Environment\.NET Framework 4.6\Win\v1-rc1 

с версией № 1.0.11123.0 на моем компьютере с Windows 7, но я не вижу того же на моем компьютере с Windows 10.

weloytty

Ответов: 19

Ответы (19)

Отличный вопрос, и ответ не из простых. Нет команды "показать мне все версии ядра .net", но есть надежда.

РЕДАКТИРОВАТЬ:

Я не уверен, когда он был добавлен, но теперь команда info включает эту информацию в свой вывод. Он распечатает установленные среды выполнения и SDK, а также некоторую другую информацию:

dotnet --info

Если вы хотите увидеть только SDK: dotnet --list-sdks

Если вы хотите увидеть только установленные среды выполнения: dotnet --list-runtimes

Я работаю в Windows, но полагаю, что это будет работать и на Mac или Linux с текущей версией.

Также вы можете ссылаться на .NET Core Download Archive, чтобы помочь вам расшифровать версии SDK.


СТАРШАЯ ИНФОРМАЦИЯ: Все, что ниже этого пункта, является старой информацией, которая менее актуальна, но все же может быть полезна.

См. Установленные Время работы:

Открыть C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App в проводнике Windows

См. Установленные SDK:

Открыть C: \ Program Files \ dotnet \ sdk в проводнике Windows

(Источник по локациям: Блог разработчика)


Кроме того, вы можете увидеть последние версии Runtime и SDK, установленные, выполнив следующие команды в командной строке:

dotnet Последняя версия Runtime указывается первым. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это больше не работает, но может работать для более старых версий.

dotnet --version Последняя версия SDK ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Очевидно, на результат могут повлиять любые файлы конфигурации global.json.


В macOS вы можете проверить версию ядра .net с помощью следующей команды.

ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/

В Ubuntu или Alpine:

ls /usr/share/dotnet/shared/Microsoft.NETCore.App/

Внизу будет указана папка с установленной версией.

(1) Если вы используете оконную систему.

Откройте командную строку.

 dotnet --version

(2) Выполните следующую команду, если вы работаете в системе Linux.

dotnet --version

dotnet --info

В Windows вам нужно только открыть командную строку и ввести:

dotnet --version

Если установлен .net core framework, вы получите текущую установленную версию

см. Снимок экрана:

enter image description here

Следующие команды доступны с .NET Core SDK 2.1 (v2.1.300):

Чтобы перечислить все установленные SDK .NET Core, используйте: dotnet --list-sdks

Чтобы перечислить все установленные среды выполнения .NET Core, используйте dotnet --list-runtimes

(проверено в Windows на момент написания статьи, 3 июня 2018 г. и снова 23 августа 2018 г.)

Обновление от 24 октября 2018: лучший вариант, вероятно, теперь dotnet --info в терминале или окне PowerShell, как уже упоминалось в других ответах.

В качестве альтернативы вы можете просто заглянуть внутрь

C: \ Program Files \ dotnet \ sdk

Запустите эту команду

dotnet --list-sdks

enter image description here

On windows I've checked the registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v5.0\5.0.12

Вы можете использовать Выполнить> команда> dotnet --version enter image description here

Этот метод работает только в Windows и может показаться излишним.

function Get-InstalledApps {
  [CmdletBinding(SupportsShouldProcess=$false)]
  Param ([Parameter(Mandatory=$false, ValueFromPipeline=$true)] [string]$ComputerName=$env:COMPUTERNAME,
         [Parameter(Mandatory=$false, ValueFromPipeline=$false)] [System.Management.Automation.PSCredential]$Credential)

  Begin { Write-Verbose "Entering $($PSCmdlet.MyInvocation.MyCommand.Name)" }

  Process {
    $HKEY_LOCAL_MACHINE=2147483650
    $Results=@()

    if ($Credential -eq $null) { $Reg=[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$ComputerName) }
    else { $Reg=Get-WmiObject -Namespace "root\default" -List "StdRegProv" -ComputerName $ComputerName -Credential $Credential }

    $RegPath=@("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")
    if ([IntPtr]::Size -ne 4) {
      $RegPath+="SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
    }

    for ($i=0; $i -lt $RegPath.Count; $i++) {
      if ($Credential -eq $null) {
        $RegKey=$Reg.OpenSubKey($RegPath[$i])
        $InstallKeys=$RegKey.GetSubKeyNames()
        $RegKey.Close()
      }
      else { $InstallKeys=$Reg.EnumKey($HKEY_LOCAL_MACHINE,$RegPath[$i]) | Select-Object -ExpandProperty sNames }
      $InstallKeys=@($InstallKeys)

      for ($j=0; $j -lt $InstallKeys.Count; $j++) {
        if ($Credential -eq $null) {
          $AppKey=$Reg.OpenSubKey(($RegPath[$i]+"\\"+$InstallKeys[$j]))
          $Result=New-Object -Type PSObject -Property @{ComputerName=$ComputerName;
                                                        DisplayName=$AppKey.GetValue("DisplayName");
                                                        Publisher=$AppKey.GetValue("Publisher");
                                                        InstallDate=$AppKey.GetValue("InstallDate");
                                                        DisplayVersion=$AppKey.GetValue("DisplayVersion");
                                                        UninstallString=$AppKey.GetValue("UninstallString")}
          $AppKey.Close()
        }
        else {
          $Result=New-Object -Type PSObject -Property @{ComputerName=$ComputerName;
                                                        DisplayName=$Reg.GetStringValue($HKEY_LOCAL_MACHINE,($RegPath[$i]+"\"+$InstallKeys[$j]),"DisplayName").sValue;
                                                        Publisher=$Reg.GetStringValue($HKEY_LOCAL_MACHINE,($RegPath[$i]+"\"+$InstallKeys[$j]),"Publisher").sValue;
                                                        InstallDate=$Reg.GetStringValue($HKEY_LOCAL_MACHINE,($RegPath[$i]+"\"+$InstallKeys[$j]),"InstallDate").sValue;
                                                        DisplayVersion=$Reg.GetStringValue($HKEY_LOCAL_MACHINE,($RegPath[$i]+"\"+$InstallKeys[$j]),"DisplayVersion").sValue;
                                                        UninstallString=$Reg.GetStringValue($HKEY_LOCAL_MACHINE,($RegPath[$i]+"\"+$InstallKeys[$j]),"UninstallString").sValue;}
        }
        if ($Result.DisplayName -ne $null) { $Results+=$Result }
      }
    }
    if ($Credential -eq $null ) { $Reg.Close() }
    $Results
  }

  End { Write-Verbose "Exiting $($PSCmdlet.MyInvocation.MyCommand.Name)" }
}

$NetSDK=Get-InstalledApps | Where-Object { $_.DisplayName -like "*.NET Core SDK*" } | Sort-Object -Property DisplayVersion -Descending | Select-Object -First 1
$NetHost=Get-InstalledApps | Where-Object { $_.DisplayName -like "*ASP.NET Core*" } | Sort-Object -Property DisplayVersion -Descending | Select-Object -First 1
$NetSDK
$NetHost

Вы можете увидеть, какие версии .NET Core SDK в настоящее время установлены с помощью терминала. Откройте терминал и выполните следующую команду.

dotnet --list-sdks

Посмотрите в C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App, чтобы увидеть, какие версии среды выполнения имеют там каталоги.Источник.

Многие ответы здесь путают SDK с Runtime, которые отличаются.

Использование Powershell:

Время работы:

(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'shared\Microsoft.NETCore.App')).Name

SDK:

(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'sdk')).Name

После всех остальных ответов это может оказаться полезным.

Откройте ваше приложение в Visual Studio. В обозревателе решений щелкните проект правой кнопкой мыши. Щелкните "Свойства". Щелкните Приложение. В разделе «Целевая платформа» нажмите кнопку раскрывающегося списка, и вот вам все установленные платформы.

Кстати - теперь вы можете выбрать, какой фреймворк вам нужен.

Правильный ответ для сред только времени выполнения без SDK, таких как сервер с установленным пакетом Windows Hosting, - запустить PowerShell с помощью следующей команды:

dotnet --info

Согласно официальной документации :

  • Параметр - версия «Распечатывает версию используемого SDK .NET Core». и поэтому не работает, если SDK не установлен. Тогда как ...
  • Параметр - info «Распечатывает подробную информацию об инструментах интерфейса командной строки и среде, например, о текущей операционной системе, фиксации SHA для версии и другой информации».

Вот еще одна официальная статья, объясняющая, как работает Управление версиями .NET Core. :)

dotnet --info

ИЛИ

dotnet --version

напишите вышеуказанные команды на своем CMD или Терминале. Тогда он покажет что-то вроде ниже enter image description here

или

enter image description here

Возможно, .NET Core установлен, но не добавлен в PATH переменная для вашей операционной системы или профиля пользователя. Запуск dotnet команды могут не работать. Как альтернатива, вы можете проверить наличие установочных папок .NET Core.

Устанавливается в стандартную папку, если вы не меняли ее при закапывании

  • исполняемый файл dotnet C: \ program files \ dotnet \ dotnet.exe

  • .NET SDK C: \ program files \ dotnet \ sdk \ {версия} \

  • .NET Runtime C: \ program files \ dotnet \ shared \ {runtime-type} \ {version} \

Подробнее см. Как проверить, что .NET Core уже установлен страница в документации .NET

Я работаю в основном с машинами и серверами для разработки Windows.

Я просто хотел указать (по крайней мере, для NET.Core 2.0 и выше) единственное, что нужно, - это выполнить команду dotnet --info в командной строке, чтобы получить информацию о последней версии . Установлена ​​ версия. Если .NET Core установлен, вы получите ответ.

На моей машине для разработки (Windows 10) результат выглядит следующим образом. SDK - это 2.1.2, а время выполнения - 2.0.3.

.NET Command Line Tools (2.1.2)

Product Information:
 Version:            2.1.2
 Commit SHA-1 hash:  5695315371

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.15063
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.2\

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.3
  Build    : a9190d4a75f4a982ae4b4fa8d1a24526566c69df

На одном из моих серверов под управлением Windows Server 2016 с пакетом хостинга Windows Server (без SDK) результат выглядит следующим образом. Нет SDK, время выполнения - 2.0.3.

Microsoft .NET Core Shared Framework Host

Version  : 2.0.3
Build    : a9190d4a75f4a982ae4b4fa8d1a24526566c69df

Ура!

Один из фиктивных способов определить, установлено ли .NET Core в Windows:

  • Наберите Windows + R
  • Тип cmd
  • В командной строке введите dotnet --version

dotnet --version

Если установлено .NET Core, мы не должны получить никаких ошибок в вышеуказанных шагах.

Вы можете проверить, доступен ли dotnet.exe:

где dotnet

Затем вы можете проверить версию:

dotnet - версия

ОБНОВЛЕНИЕ: теперь есть лучший способ сделать это, что хорошо объяснено во многих других ответах:

dotnet --info

2022 WebDevInsider