Come determinare se .NET Core è installato


302

So che per le versioni precedenti di .NET, è possibile determinare se una determinata versione è installata seguendo

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

Esiste un metodo ufficiale per determinare se .NET Core è installato?

(E non intendo l'SDK, voglio controllare un server senza l'SDK, per determinare se ha DotNetCore.1.0.0-WindowsHosting.exe installato su di esso)

posso vedere

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

con la versione n. 1.0.11123.0 sulla mia macchina Windows 7, ma non vedo le stesse cose sulla mia macchina Windows 10.


1
Buona domanda. Chiunque segua .NET Core sa che il versioning di Runtime e SDK è un argomento molto confuso.
Sean,

@Chiramisu, Tutti quelli sotto elencati hanno funzionato per me, ma a causa di alcuni dettagli di implementazione irrilevanti, sono andato con Desired State Configuration, e l'ho usato per assicurarmi che fosse installato l'hosting del server windows dnc. (Vale a dire che ho Assicurato = Assente su DotNetCore.1.0.0-WindowsServerHosting.exe e Assicurato = Presente su DotnetCore.2.0.5-WindowsServerHosting.exe) (o qualsiasi altro nome file che puoi trovare desiderato). DSC gestisce tutto il caos coinvolto nel controllo per assicurarsi che il pacchetto appropriato sia installato / disinstallato.
weloytty

3
dotnet --list-sdks e dotnet --list-runtime sono disponibili sul mio host con 2.1.300-preview1-008174 come versione attiva
jumpercake,

Esegui questo comando sotto in powershell dotnet --info Fonte
manikanta kumar il

Risposte:


209

Utilizzando Powershell :

Tempi di esecuzione:

(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 Quale versione hai? Puoi ottenerlo usando [System.Environment]::OSVersion. Ho testato i comandi sopra menzionati utilizzando Windows 10 versione 10.0.15063.0. Funziona bene
Andriy Tolstoy,

6
Posso confermare che funziona perfettamente su Windows Server 2016 e Windows 10.
user5389726598465

1
Il comando dotnet non è disponibile solo con l'SDK installato? Che era esattamente l'opposto di ciò che l'OP ha chiesto.
Aurimas N.

@AurimasN. No, il comando dotnet.exe è disponibile con le distribuzioni SDK e Runtime. L'SDK aggiunge semplicemente i comandi CLI necessari e le librerie dei prerequisiti necessari per eseguire "build dotnet.exe" ed "run dot.exe.exe" all'interno di un progetto.
Jason Mock,

3
Funziona in PowerShell su Windows 10 ma preferisco dotnet --infosuggerito in altre risposte.
Manfred,

345

Ottima domanda e la risposta non è semplice. Non esiste un comando "Mostrami tutte le versioni core .net", ma c'è speranza.

MODIFICARE:

Non sono sicuro quando è stato aggiunto, ma il comando info ora include queste informazioni nel suo output. Stamperà i runtime e gli SDK installati, nonché alcune altre informazioni:

dotnet --info

Se vuoi vedere solo gli SDK: dotnet --list-sdks

Se vuoi vedere solo i runtime installati: dotnet --list-runtimes

Sono su Windows, ma immagino che funzionerebbe anche su Mac o Linux con una versione corrente.

Inoltre, puoi fare riferimento a .NET Core Download Archive per aiutarti a decifrare le versioni dell'SDK.


INFORMAZIONI PIÙ VECCHIE: tutto al di sotto di questo punto sono informazioni obsolete, che sono meno rilevanti, ma possono comunque essere utili.

Vedi i Runtime installati :

Apri C:\Program Files\dotnet\shared\Microsoft.NETCore.Appin Esplora risorse

Vedi gli SDK installati :

Apri C:\Program Files\dotnet\sdkin Esplora risorse

(Fonte delle località: blog di uno sviluppatore )


Inoltre, è possibile visualizzare le ultime versioni di Runtime e SDK installate immettendo questi comandi al prompt dei comandi:

dotnet L'ultima versione di Runtime è la prima cosa elencata. NOTA BENE: Questo non funziona più, ma può funzionare per le versioni precedenti.

dotnet --version Ultima versione dell'SDK DISCLAIMER: Apparentemente il risultato potrebbe essere influenzato da qualsiasi file di configurazione global.json.


Su macOS puoi controllare la versione .net core usando il comando seguente.

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

Su Ubuntu o Alpine:

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

Elencherà la cartella con il nome della versione installata.


15
Su macOS:ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/
Sergii Volchkov l'

Nel mio caso, dotnet --version ha detto 1.1.0, ma le versioni installate includevano 1.1.2. Solo per il controllo, ho rinominato dotnet.exe e dotnet --version non ha trovato alcuna versione. Ho quindi reinstallato 1.1.2 e dotnet --version ha detto di nuovo che avevo 1.1.0.
William Jockusch,

1
@SergiiVolchkov grazie per il commento. Puoi dirmi come disinstallare dotnet core1.0.0 dal mac?
Pankaj Parkar,

1
.NET Core 2.1.0 aggiunge "dotnet --list-runtimes" e "dotnet --list-sdks"
b8adamson

1
dotnet --versionelenca l'SDK in uso, che è l'ultimo per impostazione predefinita, ma non sempre vero. Se nella struttura delle cartelle è presente un file global.json, verrà visualizzata la versione impostata in global.json, non l'ultima.
Maíra Wenzel - MSFT

164

La risposta corretta per ambienti solo di runtime senza SDK, ad esempio un server con il pacchetto di hosting Windows installato, è eseguire PowerShell con il comando seguente:

dotnet --info

Secondo la documentazione ufficiale :

  • L' --versionopzione "Stampa la versione di .NET Core SDK in uso." e quindi non funziona se l'SDK non è installato. Mentre...
  • L' --infoopzione "Stampa informazioni dettagliate sugli strumenti della CLI e sull'ambiente, come l'attuale sistema operativo, esegue il commit di SHA per la versione e altre informazioni."

Ecco un altro articolo ufficiale che spiega come funziona il versioning di .NET Core . :)


9
La cosa incredibile è che questa è la vera risposta. Ed è sepolto sotto una pila di risposte di persone che non si sono nemmeno preoccupate di leggere correttamente la domanda.
Jammer,

--infonon funziona sul mio server, mentre --versionfunziona. L'opzione info mi dà:Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
ArieKanarie il

@ArieKanarie Potrebbe essere necessario riparare utilizzando lo strumento di riparazione di Microsoft .NET Framework .
Chiramisu,

106

Puoi verificare se dotnet.exe è disponibile:

where dotnet

È quindi possibile controllare la versione:

dotnet --version

AGGIORNAMENTO: ora esiste un modo migliore per farlo, che è ben spiegato in molte altre risposte:

dotnet --info


34
Supera la versione della CLI dotnet, non il runtime. Sono due cose diverse. Avere CLI installato, non significa che il runtime sia installato e se è la stessa versione.
Aleksanderis,

sshed a un server con solo il runtime installato per confermare, non funziona. Vedi invece questa risposta .
Gldraphael,

49

Uno dei modi manichini per determinare se .NET Coreè installato su Windows è:

  • Premi Windows+R
  • genere cmd
  • Al prompt dei comandi, digitare dotnet --version

dotnet --version

Se .NET Coreè installato, non dovremmo ricevere alcun errore nei passaggi precedenti.


6
Vedi il commento sopra alla stessa risposta: supera la versione della CLI dotnet, non il runtime .. Sono due cose diverse. Avere CLI installato, non significa che il runtime sia installato e se è la stessa versione
Michael Freidgeim,

Nitpcking, ma non è possibile avere una CLI che funzioni senza un runtime installato. Quindi, se hai una CLI, avrai un po 'di tempo di esecuzione, è solo che potrebbe essere una versione completamente diversa.
Omajid,

@omajid Non sono sicuro di quale CLI stai parlando. La CLI a cui mi riferisco nella mia risposta è il prompt dei comandi predefinito CLI su Windows 10 x64 che è installato / disponibile senza installazioni speciali
Mohammed Zameer

Questa non è la risposta alla domanda.
Jammer,

@Jammer Ti suggerisco di fornire un suggerimento di modifica
Mohammed Zameer,

20

(1) Se si utilizza il sistema Windows.

Apri il prompt dei comandi.

 dotnet --version

(2) Esegui il comando seguente Se sei su un sistema Linux.

dotnet --version

dotnet --info

type dotnet --version- Non funziona su Windows 10. dotnet --versionFunziona però. Sei sicuro della tua risposta o era typeun errore di battitura? Entrambi i comandi di Linux funzionano su Win 10 per me.
Aditya,

@Aditya concorda sul fatto che typesia un'istruzione per il lettore piuttosto che parte del comando. Ho modificato il post in modo che corrisponda.
JohnLBevan,

Sì, era un'istruzione.
Hiren Parghi,

15

Lavoro principalmente con macchine e server per lo sviluppo di Windows.

Volevo solo sottolineare (almeno per NET.Core 2.0 e versioni successive) l'unica cosa necessaria è eseguire dotnet --infoin un prompt dei comandi per ottenere informazioni sull'ultima versione installata. Se .NET Core è installato otterrai una risposta.

Sulla mia macchina di sviluppo (Windows 10) il risultato è il seguente. SDK è 2.1.2 e il runtime è 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

Su uno dei miei server che eseguono Windows Server 2016 con Windows Server Hosting Pack (nessun SDK) il risultato è il seguente. Nessun SDK, il runtime è 2.0.3.

Microsoft .NET Core Shared Framework Host

Version  : 2.0.3
Build    : a9190d4a75f4a982ae4b4fa8d1a24526566c69df

Saluti !


10

I seguenti comandi sono disponibili con .NET Core SDK 2.1 (v2.1.300) :

Per elencare tutti gli SDK .NET Core installati usare: dotnet --list-sdks

Per elencare tutti i runtime .NET Core installati utilizzare dotnet --list-runtimes

(testato su Windows al momento della scrittura, 03 giugno 2018 e di nuovo il 23 agosto 2018)

Aggiornamento dal 24 ottobre 2018: l'opzione migliore è probabilmente ora dotnet --infoin un terminale o in una finestra di PowerShell, come già menzionato in altre risposte.


Tutti possiamo imparare. Curioso di conoscere il motivo del downvote. Forse lasciare un commento quando si vota?
Manfred,

Non ho effettuato il downgrade, ma suppongo che potrebbe essere perché hai citato i comandi "disponibili con .NET Core SDK", mentre la domanda afferma "Voglio controllare un server senza SDK". La risposta sarebbe migliorata se si determinasse quale dei comandi sopra funziona quando è installato solo il runtime .
ToolmakerSteve

@ToolmakerSteve Sì, potrebbe essere questo il punto. Non ho un ambiente, però, senza l'SDK e non vorrei andare fino a quel punto rimuovendolo .... Grazie per il tuo commento, però. Davvero apprezzato.
Manfred,

5

Su Windows, devi solo aprire il prompt dei comandi e digitare:

dotnet --version

Se il framework core .net è installato si otterrà la versione installata corrente

vedi screenshot:

inserisci qui la descrizione dell'immagine


3
Questo ti dà la versione SDK, non la versione runtime
silkfire

1

In alternativa puoi semplicemente guardare dentro

C: \ Programmi \ dotnet \ sdk


0

Cerca C:\Program Files\dotnet\shared\Microsoft.NETCore.Appper vedere quali versioni del runtime hanno directory lì. Fonte.

Molte delle risposte qui confondono l'SDK con il Runtime, che sono diverse.


0

Dopo tutte le altre risposte, questo potrebbe rivelarsi utile.

Apri l'applicazione in Visual Studio. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto. Fai clic su Proprietà. Fai clic su Applicazione. Sotto "Target Framework" fai clic sul pulsante a discesa e ci sei, tutti i framework installati.

A proposito: ora puoi scegliere quale framework vuoi.


Ho usato Visual Studio 2017. YMMV.
Baruch Atta,

-6

Non ha bisogno di un processo di installazione.

Ho appuntato "VSCore" sulla mia barra delle applicazioni (win10), quindi aprilo e apri un task manager scegli il processo "Visual Studio Core" espandi la freccia sinistra e su uno di questi processi figlio fai clic con il pulsante destro su di esso e fai clic su "Apri posizione file " menù.

Se non ricordi dove è installato, cerca il file "Code.exe" in tutti i tuoi dischi rigidi.


1
La domanda riguarda .NET CORE e non l'ide VS CODE.
user5389726598465
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.