Configurazione dell'ambiente dotnetup

Note

dotnetup è disponibile in anteprima pubblica. Le funzionalità e il comportamento potrebbero cambiare prima della disponibilità generale.

Dotnetup può configurare l'ambiente per rendere disponibili gli SDK e i runtime di .NET. Lo fa impostando le variabili di ambiente seguenti:

  • PATH: rende il dotnet comando disponibile nella riga di comando. Gli strumenti di sviluppo, ad esempio Visual Studio o C# Dev Kit, usano PATH anche per individuare .NET SDK e runtime.
  • DOTNET_ROOT: indica ai file eseguibili dell'applicazione dipendenti dal framework dove trovare un'installazione .NET e i relativi runtime condivisi.

Dotnetup supporta diverse modalità di accesso che controllano dove sono impostate queste variabili di ambiente. È possibile scegliere una modalità di accesso durante la configurazione iniziale di dotnetup o successivamente con il comando dotnetup env.

Modalità di accesso Behavior
none Non modifica queste variabili di ambiente. Eseguire .NET con dotnetup dotnet.
shell Modifica il profilo della shell per impostare queste variabili di ambiente. I processi avviati da tale shell usano gli SDK e i runtime di .NET installati da dotnetup.
everywhere Modifica il sistema PATH e imposta la variabile di ambiente a livello DOTNET_ROOT di utente. Disponibile solo in Windows.

Per impostazione predefinita, dotnetup si aggiunge anche a PATH, indipendentemente dall'impostazione della modalità di accesso. Questo può essere controllato con dotnetup env set --dotnetup-on-path <true|false>.

Considerazioni sulla modalità "Everywhere"

La modalità Everywhere è l'impostazione predefinita in Windows in modo che gli SDK e i runtime installati da dotnetup siano disponibili dagli strumenti di sviluppo e dai terminali che usano cmd come shell. Tuttavia, esistono alcuni aspetti da tenere presenti, principalmente per quanto riguarda il modo in cui interagisce con le installazioni a livello di computer dell'SDK e del runtime di .NET.

Le installazioni di .NET a livello di sistema si trovano nella cartella Programmi. Possono essere installati con i programmi di installazione che possono essere scaricati dalla pagina di download di .NET. Visual Studio installa installazioni a livello di computer dell'SDK e del runtime .NET e i programmi di installazione per le applicazioni dipendenti dal framework possono anche installare il runtime .NET da cui dipendono nella posizione a livello di computer.

In modalità ovunque, la directory radice di installazione di .NET locale dell'utente, gestita da dotnetup, sostituirà la directory radice di installazione di .NET a livello di computer. Ciò significa che .NET SDK e runtime installati in Program Files non saranno disponibili. I progetti che dipendono da tali SDK non riusciranno a compilare se non è installato un SDK corrispondente. Se non è installato un runtime corrispondente, le applicazioni dipendenti dal framework non si avviano e visualizzano un errore che indica che è necessario installare o aggiornare .NET per eseguire l'applicazione.

Per evitare questi problemi, l'installazione iniziale di dotnetup offre la possibilità di eseguire la migrazione delle installazioni esistenti di system .NET SDK e Runtime. È anche possibile migrarli esplicitamente eseguendo dotnetup sdk install --migrate-from-system per gli SDK o dotnetup runtime install --migrate-from-system per i runtime.

L'attivazione o la disattivazione della modalità Everywhere richiede la modifica della variabile PATH di sistema, che richiede l'elevazione dei privilegi (ad esempio un'approvazione richiesta di controllo dell'account utente o "Esegui come amministratore"). Ciò è dovuto al fatto che i programmi di installazione a livello di sistema per .NET aggiungono la directory radice di installazione di .NET al percorso di sistema e il percorso di sistema ha la precedenza su PATH a livello di utente durante la risoluzione dei comandi. Quindi dotnetup deve modificare il PATH di sistema per fare in modo che la directory radice di installazione di .NET di dotnetup abbia la precedenza.

Poiché il PATH di sistema si applica a tutti gli utenti, queste modifiche possono influire sugli altri utenti. Il percorso aggiunto al PATH di sistema è per impostazione predefinita nella cartella AppData locale dell'utente. In genere non sarà accessibile ad altri utenti, quindi non influirebbe su quale versione di dotnet viene risolta. Tuttavia, i processi con privilegi elevati (ovvero l'esecuzione come amministratore) sarebbero in grado di leggere il percorso e potrebbero finire per individuare in modo imprevisto SDK o runtime .NET di un altro utente.

Shell supportati

Supporto per la generazione di profili e script:

  • Bash
  • Z shell
  • Pesce
  • Pwsh (PowerShell Core)
  • PowerShell

Se non si passa --shell, dotnetup rileva la shell corrente. Usare una shell esplicita quando il rilevamento non è disponibile o quando si vuole aggiornare un profilo diverso:

dotnetup env set shell --shell zsh

Stato archiviato e osservato

dotnetup.config.json archivia la modalità di accesso selezionata e indica se dotnetup deve essere su PATH. dotnetup env show confronta tale configurazione con il profilo e l'ambiente correnti. Segnala la deriva se lo stato osservato non corrisponde.

Riapplicare la configurazione archiviata per correggere la deriva:

dotnetup env set

Terminale attuale

Le modifiche di profilo e dell'ambiente Windows non riscrivono l'ambiente del processo corrente. Aprire un nuovo terminale, caricare il profilo modificato o valutare lo script generato.

Per la shell Bash o Z:

eval "$(dotnetup env script)"

Per PowerShell:

dotnetup env script --shell pwsh | Invoke-Expression

env script segue la configurazione archiviata quando non si passano le opzioni di selezione. Usare --dotnet, --dotnetupo entrambi per selezionare il contenuto generato.

Rimuovere la configurazione dell'ambiente

Rimuovere tutti i cablaggi dell'ambiente gestito:

dotnetup env clear

Questo comando equivale a:

dotnetup env set none --dotnetup-on-path false

Non disinstalla gli SDK o i runtime.