Installare .NET SDK con Snap

Questo articolo descrive come installare il pacchetto snap sdk .NET. I pacchetti SDK snap di .NET vengono forniti e gestiti da Canonical. I pacchetti Snap rappresentano un'ottima alternativa allo strumento di gestione pacchetti integrato nella distribuzione Linux.

Un pacchetto Snap è un bundle composto da un'app e dalle relative dipendenze che funziona in molte distribuzioni Linux diverse. I pacchetti Snap possono essere reperiti e installati dallo Snap Store. Per altre informazioni su Snap, vedere Introduzione.

Importante

Se si installa .NET con Snap, usare Snap per gestire tutte le installazioni .NET. Evitare di combinare Snap con altri metodi di installazione, ad esempio uno strumento di gestione pacchetti o l'installazione con script, perché la combinazione dei metodi può causare conflitti.

Attenzione

Le installazioni snap di .NET possono avere problemi durante l'esecuzione di strumenti .NET. Per usare gli strumenti di .NET, è consigliabile installare .NET usando lo script dotnet-install o lo strumento di gestione pacchetti per la distribuzione Linux specifica.

Si tratta di un problema noto che il comando dotnet watch non funziona quando .NET viene installato tramite Snap.

Se si intende usare gli strumenti di .NET o il comando dotnet watch, è consigliabile installare .NET usando lo script dotnet-install.

Prerequisiti

  • Distribuzione Linux che supporta Snap.
  • snapd il daemon di Snap.

La distribuzione Linux in uso potrebbe già includere Snap. Provare a eseguire snap da un terminale per verificare se il comando funziona. Per un elenco delle distribuzioni Linux supportate e istruzioni su come installare Snap, vedere Installazione di snapd.

.NET rilasci

Microsoft pubblica .NET in due diversi criteri di supporto, LTS (Long Term Support) e Standard Term Support (STS). La qualità di tutte le versioni è identica. L'unica differenza consiste nella lunghezza del supporto. Le versioni LTS ottengono il supporto gratuito e patch per tre anni. Le versioni stS ottengono supporto gratuito e patch per due anni. Per altre informazioni, vedere .NET Support Policy.

Le versioni di .NET attualmente supportate da Microsoft sono:

  • 10.0 (LTS) - Il supporto termina il 14 novembre 2028.
  • 9.0 (STS) - Il supporto termina il 10 novembre 2026.
  • 8.0 (LTS) - Il supporto termina il 10 novembre 2026.

Altre entità che compilano e rilasciano .NET possono introdurre criteri di supporto diversi. Assicurarsi di controllare con loro per comprendere come .NET è supportato.

1. Installare l'SDK

Per installare .NET SDK, usare gli identificatori di pacchetto snap specifici della versione perché questo approccio consente di installare e gestire più versioni dell'SDK affiancate. Ad esempio, usare dotnet-sdk-80 per .NET 8 e dotnet-sdk-100 per .NET 10. L'SDK include sia il runtime ASP.NET Core che quello .NET, associato all'SDK per il controllo delle versioni. Questo articolo usa il pacchetto snap .NET 10 SDK; se usi un pacchetto diverso, sostituiscilo.

Suggerimento

La pagina del pacchetto sdk di Snapcraft .NET (.NET 8, .NET 9, .NET 10) include istruzioni specifiche per la distribuzione su come installare Snapcraft e .NET.

  1. Aprire un terminale.

  2. Usare snap install per installare il pacchetto snap .NET SDK.

    Il comando seguente installa .NET SDK 10:

    sudo snap install dotnet-sdk-100
    

La tabella seguente elenca i pacchetti snap sdk .NET che è possibile installare:

.NET versione Pacchetto Snap
10 (LTS) dotnet-sdk-100
9 (STS) dotnet-sdk-90
8 (Long Term Support - Supporto a Lungo Termine) dotnet-sdk-80

2. Eseguire il mapping del comando dotnet

Poiché Snap non crea un comando senza versione dotnet, crea un collegamento simbolico per rendere dotnet disponibile a livello di sistema. Crea questo collegamento solo se vuoi associare il comando dotnet a questa specifica installazione Snap. Se è già stato installato .NET tramite un altro metodo e si crea questo collegamento, il mapping viene sovrascritto.

Se /usr/local/bin/dotnet esiste già, rimuoverlo prima di creare il collegamento.

sudo ln -s /snap/dotnet-sdk-100/current/usr/bin/dotnet /usr/local/bin/dotnet

3. Esportare il percorso di installazione

Configurare la DOTNET_ROOT variabile di ambiente nel profilo della shell perché gli strumenti lo usano per determinare dove è installato .NET. Le installazioni snap non impostano automaticamente questa variabile. Il percorso usa il formato seguente: /snap/{package}/current/usr/lib/dotnet.

export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet

Sostituire 100 con la versione dell'SDK installata, ad esempio 80 per .NET 8 o 90 per .NET 9.

Esportare la variabile di ambiente in modo permanente

Il comando export precedente imposta la variabile di ambiente solo per la sessione del terminale in cui è stata eseguita.

Per aggiungere in modo permanente i comandi, è possibile modificare il profilo della shell. Sono disponibili molte shell diverse per Linux e ognuna ha un profilo diverso. Ad esempio:

  • Shell Bash: ~/.bash_profile, ~/.bashrc
  • Korn Shell: ~/.kshrc o .profile
  • Z Shell: _~/.zshrc* o .zprofile

Modificare il file di origine appropriato per la shell, aggiungere il comando di esportazione per la versione di .NET installata e salvare le modifiche.

Ad esempio: export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet.

4. Usare l'interfaccia della riga di comando di .NET

Aprire un terminale ed eseguire il dotnet comando .

dotnet

Verrà visualizzato l'output seguente:

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

Per informazioni su come usare l'interfaccia della riga di comando di .NET, vedere .NET panoramica dell'interfaccia della riga di comando.

Risoluzione dei problemi

Non è possibile installare Snap in WSL2

systemd deve essere abilitato nell'istanza di WSL2 prima di poter installare Snap.

  1. Aprire /etc/wsl.conf in un editor di testo di propria scelta.

  2. Incollare la configurazione seguente:

    [boot]
    systemd=true
    
  3. Salvare il file e riavviare l'istanza di WSL2 tramite PowerShell. Usare il comando wsl.exe --shutdown.

Non è possibile risolvere il comando dotnet o l'SDK

È comune che altre app, come un IDE di codice o un'estensione in Visual Studio Code, tentino di determinare il percorso del .NET SDK. In genere, l'individuazione viene eseguita controllando la variabile di ambiente DOTNET_ROOT o scoprendo dove si trova il file eseguibile dotnet. Un SDK di .NET installato con snap potrebbe confondere queste app. Quando queste app non riescono a risolvere il .NET SDK, viene visualizzato un errore simile a uno dei messaggi seguenti:

  • L'SDK 'Microsoft.NET.Sdk' specificato non è stato trovato.
  • SDK 'Microsoft.NET.Sdk.Web' specificato non è stato possibile trovare.
  • Non è stato possibile trovare l'SDK specificato 'Microsoft.NET.Sdk.Razor'.

Per risolvere il problema, provare i passaggi seguenti:

  1. Completa 2. Eseguire il mapping del comando dotnet.
  2. Impostare la DOTNET_ROOT variabile di ambiente in modo permanente seguendo Esporta la variabile di ambiente in modo permanente.

Errori del certificato TLS/SSL

Quando .NET viene installato tramite Snap, è possibile che in alcune distribuzioni i certificati TLS/SSL .NET non vengano trovati e si potrebbe ricevere un errore durante restore:

Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
  Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]

Per risolvere questo problema, impostare alcune variabili di ambiente:

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

La posizione del certificato varia in base alla distribuzione. Ecco i percorsi per le distribuzioni in cui è stato riscontrato il problema:

Distribuzione Luogo
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt