Condividi tramite


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 maggiori informazioni su Snap, consultare la sezione Avvio rapido.

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

Importante

.NET 10 è stato rilasciato il 11 novembre 2025. L'inclusione dei pacchetti nei feed del gestore pacchetti o l'inserimento da parte della tua specifica distribuzione Linux potrebbe richiedere tempo.

A partire da .NET 9, i pacchetti snap per .NET SDK vengono pubblicati in identificatori specifici della versione( ad esempio, dotnet-sdk-90 per .NET 9 e dotnet-sdk-100 per .NET 10). Prima di .NET 9, tutte le versioni dell'SDK sono state pubblicate con lo stesso identificatore dotnet-sdk e la versione è stata specificata tramite un canale. Inoltre, .NET 9 e versioni successive supportano entrambe le architetture x64 e Arm64, mentre le versioni precedenti supportano solo x64. L'SDK include sia il runtime ASP.NET Core che quello .NET, associato all'SDK per il controllo delle versioni.

Suggerimento

La pagina del pacchetto Snapcraft .NET SDK include istruzioni specifiche della distribuzione su come installare Snapcraft e .NET.

  1. Aprire un terminale.

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

    Il parametro --classic è obbligatorio.

    • Per .NET 9 e versioni successive

      Installare il pacchetto specifico della versione. Ad esempio, il comando seguente installa .NET SDK 10:

      sudo snap install dotnet-sdk-100 --classic
      
    • Per .NET 8 e versioni precedenti

      Installare dal dotnet-sdk pacchetto e specificare un canale. Se questo parametro viene omesso, viene usato latest/stable. Ad esempio, il comando seguente installa .NET SDK 8:

      sudo snap install dotnet-sdk --classic --channel 8.0/stable
      

L'alias di Snap dotnet viene creato e mappato automaticamente al comando dotnet del pacchetto Snap.

La tabella seguente elenca i pacchetti e i canali snap che è possibile installare:

.NET versione Pacchetto Snap o canale
10 (LTS) dotnet-sdk-100 (anteprima)
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk --channel 8.0/stable
7 dotnet-sdk --channel 7.0/stable (non più supportato)
6 dotnet-sdk --channel 6.0/stable (non più supportato)
5 dotnet-sdk --channel 5.0/stable (non più supportato)
3.1 dotnet-sdk --channel 3.1/stable (non più supportato)
2.1 dotnet-sdk --channel 2.1/stable (non più supportato)

2. Esportare il percorso di installazione

La variabile di ambiente DOTNET_ROOT viene spesso usata dagli strumenti per determinare dove è installato .NET. Quando .NET viene installato tramite Snap, questa variabile di ambiente non è configurata. È necessario configurare la variabile di ambiente DOTNET_ROOT nel proprio profilo. Il percorso del pacchetto Snap è nel formato seguente: /snap/{package}/current.

Per .NET 9 e versioni successive, usare il nome del pacchetto specifico della versione:

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

Per .NET 8 e versioni precedenti, usare il nome del pacchetto condiviso:

export DOTNET_ROOT=/snap/dotnet-sdk/current

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 e aggiungere il comando di esportazione per la versione di .NET installata. Per .NET 9+, usare export DOTNET_ROOT=/snap/dotnet-sdk-100/current (modificare il numero di versione in base alle esigenze). Per .NET 8 e versioni precedenti, usare export DOTNET_ROOT=/snap/dotnet-sdk/current.

3. Usare il .NET CLI

Aprire un terminale e digitare dotnet.

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

Il comando del terminale dotnet non funziona

I pacchetti Snap possono eseguire il mapping di un alias a un comando fornito dal pacchetto. Per impostazione predefinita, i pacchetti snap .NET SDK creano un alias per il comando dotnet. Se l'alias non è stato creato o è stato rimosso in precedenza, usare il comando seguente per eseguire il mapping dell'alias.

Per .NET 9 e versioni successive:

sudo snap alias dotnet-sdk-100.dotnet dotnet

Per .NET 8 e versioni precedenti:

sudo snap alias dotnet-sdk.dotnet dotnet

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. Assicurarsi di esportare in modo permanente la variabile di ambiente DOTNET_ROOT.

  2. Provare a creare un collegamento simbolico dell'eseguibile Snap dotnet al percorso che il programma sta cercando.

    Due percorsi comuni cercati dal comando dotnet sono:

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    Usare il comando seguente per creare un collegamento simbolico al pacchetto snap. Per .NET 9 e versioni successive, usare il nome del pacchetto specifico della versione:

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

    Per .NET 8 e versioni precedenti:

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

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