Як визначити, чи встановлено .NET Core


301

Я знаю, що для старих версій .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, знають, що версії Runtime і SDK є дуже заплутаною темою.
Шон

@Chiramisu, Усі перевірені нижче роботи працювали для мене, але через деякі невідповідні деталі реалізації я перейшов до налаштування бажаного стану та використав це для забезпечення встановлення хостингу сервера dnc Windows. (Тобто я маю забезпечити = Відсутній у 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

Відповіді:


208

Використання 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

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 build" та "dotnet.exe run" з проекту.
Джейсон Мок

3
Працює в PowerShell на Windows 10, але я вважаю за краще dotnet --infoпропонувати інші відповіді.
Манфред

344

Чудове запитання, а відповідь - не просте. Немає команди "показати мені всі .net core версії", але є надія.

Редагувати:

Я не впевнений, коли він був доданий, але команда info тепер включає цю інформацію у свій вихід. Він буде друкувати встановлені умови виконання та SDK, а також іншу інформацію:

dotnet --info

Якщо ви хочете бачити лише SDK: dotnet --list-sdks

Якщо ви хочете бачити лише встановлені режими виконання: dotnet --list-runtimes

Я в Windows, але я думаю, що це буде працювати і на Mac чи Linux, і з поточною версією.

Також ви можете посилатися на .NET Core Archive 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 DISCLAIMER: Мабуть, на результат можуть вплинути будь-які конфігураційні файли 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, а не останню.
Maíra Wenzel - MSFT

164

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

dotnet --info

Згідно з офіційною документацією :

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

Ось ще одна офіційна стаття, що пояснює, як працює версія .NET Core . :)


9
Що неймовірного, це фактична відповідь. І це поховано під групою відповідей від людей, які навіть не потурбувались правильно прочитати питання.
Джаммер

--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 .
Chiramisu

106

Ви можете перевірити, чи доступний dotnet.exe:

where dotnet

Потім ви можете перевірити версію:

dotnet --version

ОНОВЛЕННЯ: Зараз існує кращий спосіб зробити це, що добре пояснено у багатьох інших відповідях:

dotnet --info


34
Це вихід CLI-версії CLI, а не час виконання. Це дві різні речі. Якщо встановити CLI, це не означає, що встановлено час виконання, і якщо це однакова версія.
Олександрiс

sshЕд на сервер із встановленою лише програмою для підтвердження, він не працює. Дивіться замість цього відповідь .
gldraphael

49

Один з манекенів способів визначити, чи .NET Coreвстановлено він у Windows:

  • Натисніть Windows+R
  • Тип cmd
  • У командному рядку введіть dotnet --version

dotnet --вернення

Якщо .NET Coreвстановлено встановлення, ми не повинні мати помилок у вищезазначених кроках.


6
Дивіться коментар вище до тієї самої відповіді: Це випускає дотнет CLI-версію, а не час виконання. Це дві різні речі. Якщо встановити CLI, це не означає, що час виконання буде встановлено, і якщо це одна і та ж версія
Michael Freidgeim

Nitpcking, але ви не можете встановити CLI, який працює без встановленого часу виконання. Тож якщо у вас є CLI, у вас буде деякий час виконання, просто це може бути зовсім інша версія.
omajid

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

Це не відповідь на питання.
Джаммер

@Jammer Я пропоную вам надати пропозицію щодо редагування
Мохаммед Замер

20

(1) Якщо ви перебуваєте в системі Window.

Відкрийте командний рядок.

 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 на час написання, 03 червня 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: \ Файли програм \ dotnet \ sdk


0

Загляньте, C:\Program Files\dotnet\shared\Microsoft.NETCore.Appщоб побачити, які версії програми виконання там мають каталоги. Джерело

Багато відповідей тут плутають SDK з режимом виконання, які відрізняються.


0

Після всіх інших відповідей це може виявитися корисним.

Відкрийте свою програму у Visual Studio. У Провіднику рішень клацніть правою кнопкою миші проект. Клацніть Властивості. Клацніть Застосувати. У розділі "Цільова рамка" натисніть кнопку, що випадає, і там ви всі встановлені рамки.

BTW - тепер ви можете вибрати, яку рамку ви хочете.


Я використовував Visual Studio 2017. YMMV.
Барух Атта

-6

Він не потребує процесу встановлення.

Я закріпив "VSCore" на моїй панелі завдань (win10), тому відкрийте її та відкрийте диспетчер завдань, виберіть "Visual Studio Core" процес, розгорніть стрілку ліворуч і над будь-яким з них дочірній процес оберіть праву кнопку і натисніть "Відкрити розташування файлу" "меню.

Якщо ви не пам’ятаєте, де встановлений пошук, шукайте файл «Code.exe» на всіх ваших жорстких дисках.


1
Питання стосується .NET CORE не ide VS CODE.
користувач5389726598465
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.