Instalación del SDK de .NET con Snap

En este artículo se describe cómo instalar el paquete de ajuste del SDK de .NET. Los paquetes de Snap del SDK de .NET son proporcionados y mantenidos por Canonical. Los snaps son una excelente alternativa para el administrador de paquetes integrada en la distribución de Linux.

Un Snap es un paquete de una aplicación y sus dependencias que funciona en diferentes distribuciones de Linux. Los snaps son detectables e instalables desde el Snap Store. Para obtener más información sobre Snap, consulte Introducción.

Importante

Si instala .NET con Snap, use Snap para administrar todas las instalaciones de .NET. Evite mezclar Snap con otros métodos de instalación, como un administrador de paquetes o la instalación con scripts, ya que los métodos de mezcla pueden causar conflictos.

Precaución

Las instalaciones de Snap de .NET pueden tener problemas al ejecutar herramientas de .NET. Si desea usar herramientas de .NET, se recomienda instalar .NET mediante el script dotnet-install script o el administrador de paquetes para la distribución de Linux concreta.

Es un problema conocido que el comando dotnet watch no funciona cuando se instala .NET a través de Snap.

Si va a usar herramientas de .NET o el comando dotnet watch, se recomienda instalar .NET mediante el dotnet-install script.

Requisitos previos

  • Distribución de Linux que admite Snap.
  • snapd demonio del Snap.

Es posible que su distribución de Linux ya incluya el Snap. Pruebe a ejecutar snap desde un terminal para ver si el comando funciona. Para obtener una lista de las distribuciones de Linux admitidas e instrucciones sobre cómo instalar Snap, consulte Instalaciónsnapd.

versiones de .NET

Microsoft publica .NET en dos directivas de soporte técnico diferentes, soporte técnico a largo plazo (LTS) y soporte técnico estándar (STS). La calidad de todas las versiones es la misma. La única diferencia es la duración del soporte técnico. Las versiones LTS obtienen soporte técnico y revisiones gratuitas durante tres años. Las versiones de STS obtienen soporte técnico gratuito y revisiones durante dos años. Para obtener más información, consulte .NET Directiva de soporte técnico.

Las versiones de .NET compatibles actualmente con Microsoft son:

  • 10.0 (LTS): el soporte técnico finaliza el 14 de noviembre de 2028.
  • 9.0 (STS): el soporte técnico finaliza el 10 de noviembre de 2026.
  • 8.0 (LTS): el soporte técnico finaliza el 10 de noviembre de 2026.

Otras entidades que compilan y liberan .NET pueden introducir diferentes directivas de soporte técnico. Asegúrese de consultar con ellos para saber cómo se admite .NET.

1. Instalar el SDK

Para instalar el SDK de .NET, use identificadores de paquetes snap específicos de cada versión, ya que este enfoque le permite instalar y administrar varias versiones del SDK en paralelo. Por ejemplo, use dotnet-sdk-80 para .NET 8 y dotnet-sdk-100 para .NET 10. El SDK incluye tanto el entorno de ejecución de ASP.NET Core como el de .NET, cuyos versiones están alineadas con la del SDK. En este artículo se utiliza el paquete snap del SDK de .NET 10; si usa un paquete diferente, sustitúyalo.

Sugerencia

La página del paquete del SDK de Snapcraft .NET (.NET 8, .NET 9, .NET 10) incluye instrucciones específicas de la distribución sobre cómo instalar Snapcraft y .NET.

  1. Abra un terminal.

  2. Use snap install para instalar el paquete snap del SDK de .NET.

    El comando siguiente instala .NET SDK 10:

    sudo snap install dotnet-sdk-100
    

En la tabla siguiente se enumeran los paquetes de ajuste del SDK de .NET que puede instalar:

versión de .NET Paquete Snap
10 (LTS) dotnet-sdk-100
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk-80

2. Asignar el comando dotnet

Dado que Snap no crea un comando dotnet sin versión, cree un enlace simbólico para que dotnet esté disponible en todo el sistema. Cree este vínculo solo si desea asignar el dotnet comando a esta instalación específica de Snap. Si ya tiene .NET instalado mediante otro método y crea este enlace, sobrescribirá esa asociación.

Si /usr/local/bin/dotnet ya existe, quítelo antes de crear el vínculo.

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

3. Exportación de la ubicación de instalación

Configure la variable de entorno DOTNET_ROOT en el perfil del shell, porque las herramientas la usan para determinar dónde está instalado .NET. Las instalaciones de Snap no establecen esta variable automáticamente. La ruta de acceso usa el formato siguiente: /snap/{package}/current/usr/lib/dotnet.

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

Reemplace 100 por la versión del SDK que ha instalado, como 80 para .NET 8 o 90 para .NET 9.

Exportación permanente de la variable de entorno

El comando export anterior solo establece la variable de entorno para la sesión de terminal en la que se ha ejecutado.

Puede editar el perfil del shell para agregar los comandos de forma permanente. Hay muchos shells diferentes disponibles para Linux y cada uno tiene un perfil diferente. Por ejemplo:

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

Edite el archivo de origen adecuado para el shell, agregue el comando export para la versión de .NET instalada y guarde los cambios.

Por ejemplo: export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet.

4. Utilice la CLI de .NET.

Abra un terminal y ejecute el dotnet comando .

dotnet

Se muestra el siguiente resultado:

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.

Para obtener información sobre cómo usar la CLI de .NET, consulte .NET información general de la CLI.

Solución de problemas

No se puede instalar Snap en WSL2

systemd debe estar habilitado en la instancia de WSL2 para poder instalar Snap.

  1. Abra /etc/wsl.conf en un editor de texto de su elección.

  2. Pegue la siguiente configuración:

    [boot]
    systemd=true
    
  3. Guarde el archivo y reinicie la instancia de WSL2 a través de PowerShell. Use el comando wsl.exe --shutdown.

No se puede resolver el comando dotnet ni el SDK

Es habitual que otras aplicaciones, como un IDE de código o una extensión en Visual Studio Code, intenten resolver la ubicación del SDK de .NET. Normalmente, el descubrimiento se realiza comprobando la variable de entorno DOTNET_ROOT o averiguando dónde se encuentra el ejecutable dotnet. Es posible que un SDK de .NET instalado con Snap podría confundir estas aplicaciones. Cuando estas aplicaciones no pueden resolver el SDK de .NET, se muestra un error similar a uno de los siguientes mensajes:

  • El SDK 'Microsoft.NET.Sdk' especificado no se pudo encontrar.
  • El SDK 'Microsoft.NET.Sdk.Web' especificado no se pudo encontrar.
  • No se pudo encontrar el SDK 'Microsoft.NET.Sdk.Razor' especificado

Pruebe los siguientes pasos para solucionar el problema:

  1. Complete 2. Asocie el comando dotnet.
  2. Establezca permanentemente la DOTNET_ROOT variable de entorno siguiendo Exportar la variable de entorno de forma permanente.

Errores de certificado TLS/SSL

Cuando se instala .NET a través de Snap, es posible que en algunas distribuciones no se encuentren los certificados TLS/SSL de .NET y es posible que reciba un error 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]

Para resolver este problema, establezca algunas variables de entorno:

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

La ubicación del certificado varía según la distribución. A continuación se indican las ubicaciones de las distribuciones en las que se ha observado el problema:

Distribución Ubicación
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt