Как определить, установлен ли .NET Core


302

Я знаю, что для более старых версий .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.


1
Хороший вопрос. Любой, кто следит за .NET Core, знает, что управление версиями среды выполнения и SDK - очень запутанная тема.
Шон

@Chiramisu, все проверенные ниже работали для меня, но из-за некоторых нерелевантных деталей реализации, я выбрал Desired State Configuration и использовал это, чтобы убедиться, что хостинг dnc windows server установлен. (То есть у меня есть Ensure = отсутствует на DotNetCore.1.0.0-WindowsServerHosting.exe и Ensure = присутствует на DotnetCore.2.0.5-WindowsServerHosting.exe) (или любое другое имя файла, которое вы можете найти нужным). DSC обрабатывает весь беспорядок, связанный с проверкой, чтобы убедиться, что соответствующий пакет установлен / удален.
weloytty

3
dotnet --list-sdks и dotnet --list-runtimes доступны на моем хосте с активной версией 2.1.300-preview1-008174
jumpercake

Выполните команду ниже в powershell dotnet --info Источник
manikanta kumar

Ответы:


209

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

Runtimes:

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

SDKs:

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

1
@MarceloFilho Какая у вас версия? Вы можете получить это используя [System.Environment]::OSVersion. Я протестировал вышеупомянутые команды, используя Windows 10 версии 10.0.15063.0. Работает нормально.
Андрей Толстой

6
Я могу подтвердить, что это прекрасно работает на Windows Server 2016 и Windows 10.
user5389726598465

1
Команда dotnet не доступна только с установленным SDK? Что было совершенно противоположно тому, что спросил ОП.
Ауримас Н.

@AurimasN. Нет, команда dotnet.exe доступна как для SDK, так и для среды выполнения. SDK просто добавляет необходимые команды CLI и необходимые библиотеки, необходимые для выполнения «сборки dotnet.exe» и «запуска dotnet.exe» изнутри проекта.
Джейсон Мок

3
Работает в PowerShell в Windows 10, но я предпочитаю dotnet --infoпредлагать другие ответы.
Манфред

345

Отличный вопрос, и ответ не простой. Команды «покажи все версии .net core» нет, но есть надежда.

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

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

dotnet --info

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

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

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

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


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

Смотрите установленные Runtime :

Открыть 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/

Будет выведен список папок с именем установленной версии.


15
На macOS:ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/
Сергей Волчков

В моем случае dotnet --version сказал 1.1.0, но установленные версии включали 1.1.2. Просто для проверки я переименовал dotnet.exe, а dotnet --version не нашел ни одной версии. Затем я переустановил 1.1.2, и dotnet --version снова сказал, что у меня 1.1.0.
Уильям Джокуш

1
@SergiiVolchkov спасибо за комментарий. Подскажите пожалуйста, как удалить dotnet core1.0.0 с mac?
Панкадж Паркар

1
.NET Core 2.1.0 добавляет «dotnet --list-runtimes» и «dotnet --list-sdks»
b8adamson

1
dotnet --versionперечисляет используемый SDK, который является последним по умолчанию, но не всегда верным. Если в вашей структуре папок есть файл global.json, он будет отображать любую версию, установленную в global.json, а не самую последнюю.
Майра Венцель - MSFT

164

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

dotnet --info

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

  • --versionВариант «Печатает версию ядра SDK .NET в использовании.» и, следовательно, не работает, если SDK не установлен. В то время как...
  • --infoОпция «Выводит подробные сведения о CLI инструментах и окружающей среде, таких как текущая операционной система, совершать SHA для версии, и другой информации.»

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


9
Что невероятно, так это фактический ответ. И он похоронен под стопкой ответов от людей, которые даже не удосужились прочитать вопрос правильно.
Jammer

--infoне работает на моем сервере, а --versionработает. Опция информации дает мне:Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
ArieKanarie

@ArieKanarie Вам может понадобиться восстановить с помощью Microsoft .NET Framework Repair Tool .
Тирамису

106

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

where dotnet

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

dotnet --version

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

dotnet --info


34
Это превосходит DotNet CLI версию, а не время выполнения .. Это две разные вещи. Наличие CLI не означает, что установлена ​​среда выполнения, и если она той же версии.
Александерис,

sshдля подтверждения на сервере, на котором установлена ​​только среда выполнения, это не работает. Смотрите этот ответ вместо .
Gldraphael

49

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

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

dotnet - версия

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


6
См. Комментарий выше к тому же ответу: Это превосходит версию CLI dotnet CLI, а не время выполнения. Это две разные вещи. Наличие CLI не означает, что установлена ​​среда выполнения, и если она той же версии
Майкл

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

@omajid Не знаю, о каком CLI вы говорите. CLI, на который я ссылаюсь в своем ответе, - это CLI командной строки по умолчанию в Windows 10 x64, который устанавливается / доступен без специальных установок
Mohammed Zameer

Это не ответ на вопрос.
Jammer

@Jammer Я предлагаю вам предоставить редактировать предложение
Мохаммед Zameer

20

(1) Если вы находитесь в оконной системе.

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

 dotnet --version

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

dotnet --version

dotnet --info

type dotnet --version- Не работает на Windows 10. dotnet --versionработает, хотя. Вы уверены в своем ответе или typeэто опечатка? Обе команды Linux работают на Win 10 для меня.
Адитья,

@ Aditya согласен, думаю, что typeэто инструкция для читателя, а не часть команды. Я отредактировал пост, чтобы соответствовать.
JohnLBevan

Да, это была инструкция.
Хирен Парги

15

Я работаю в основном с машинами и серверами для разработки 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

Ура!


10

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

Для просмотра списка всех установленных .NET Core SDK используйте: dotnet --list-sdks

Для просмотра списка всех установленных сред выполнения .NET Core используйте dotnet --list-runtimes

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

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


Мы все можем учиться. Любопытно узнать причину понижения. Возможно, оставить комментарий, когда вы понижаете голос?
Манфред

Я не понизил голос, но я полагаю, что это может быть потому, что вы упомянули команды, «доступные с .NET Core SDK», а вопрос «я хочу проверить сервер без SDK». Ваш ответ будет улучшен, если вы определите, какие из вышеперечисленных команд работают, когда установлена только среда выполнения .
ToolmakerSteve

@ ToolmakerSteve Да, это может быть главное. У меня нет среды, однако, без SDK, и я бы не хотел идти на это, удаляя его ... Хотя, спасибо за ваш комментарий. Очень ценится.
Манфред

5

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

dotnet --version

Если установлена ​​основная платформа .net, вы получите текущую установленную версию

смотреть скриншот:

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


3
Это дает вам версию SDK, а не версию во время выполнения
silkfire

1

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

C: \ Program Files \ dotnet \ sdk


0

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

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


0

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

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

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


Я использовал Visual Studio 2017. YMMV.
Барух Атта

-6

Это не требует процесса установки.

Я закрепил «VSCore» на своей панели задач (win10), поэтому откройте его и откройте диспетчер задач, выберите «Visual Studio Core», разверните стрелку влево и над любым из них дочерний процесс, нажмите правую кнопку над ним и нажмите «Открыть расположение файла». "меню.

Если вы не помните, где установлен, найдите файл «Code.exe» на всех ваших жестких дисках.


1
Речь идет о .NET CORE, а не об VS. КОДЕ.
user5389726598465
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.