.NET Core (Español)
.NET Core es un nuevo framework FLOSS de Microsoft para C#, Visual Basic y F#. Está diseñado para ser multiplataforma, modular y apto para aplicaciones modernas, a diferencia de su predecesor, el framework .NET.
Instalación
Si solo desea ejecutar aplicaciones gestionadas por .NET Core, instale el paquete dotnet-runtime.
Para compilar aplicaciones con .NET Core, instale también dotnet-sdk.
Microsoft recomienda utilizar Visual Studio Code, su IDE FLOSS basado en Electron, para compilar y depurar aplicaciones .NET Core.
Instalación manual de múltiples versiones
Puede tener instaladas varias versiones del SDK o del runtime de .NET Core usando el script dotnet-install.sh proveído por la .NET Foundation. Aquí puede encontar la documentación del script.
Por ejemplo, el siguiente comando instala la ultima versión del canal «current» en /usr/share/dotnet
:
# ./dotnet-install.sh --install-dir /usr/share/dotnet -channel Current -version latest
Si quiere simular la instalación, use el parámetro -Dryrun
.
Una vez que esté instalada, puede ver los SDKs disponibles:
$ dotnet --list-sdks
2.2.108 [/usr/share/dotnet/sdk] 3.0.103 [/usr/share/dotnet/sdk]
$ dotnet --version
3.0.103
Desinstalación de versiones instaladas manualmente
Puede querer desinstalar las versiones desactualizadas que fueron instaladas con dotnet-install.sh
. La Herramienta de desinstalación de .NET aún no tiene soporte para Linux, así que tendrá que desinstalarlas manualmente.
$ dotnet --list-sdks
5.0.100 [/usr/share/dotnet/sdk] 5.0.102 [/usr/share/dotnet/sdk]
Desinstale el SDK:
$ SDK_VERSION="5.0.100" $ DOTNET_UNINSTALL_PATH="/usr/share/dotnet" # rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
Al usar dotnet-install.sh
, el host dotnet y otros paquetes compartidos son instalados, y puede que sea necesario quitarlos dependiendo de la versión.
Termine la desinstalación de la versión de .NET (SDK, host, paquetes compartidos):
$ SDK_VERSION="5.0.100" $ DOTNET_VERSION="5.0.0" $ DOTNET_UNINSTALL_PATH="/usr/share/dotnet" # rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/host/fxr/$DOTNET_VERSION
Instalación de múltiples versiones desde el AUR
Algunos de los paquetes de dotnet en el AUR pueden ser instalados junto con otros. Solo se necesita un paquete host (dotnet-host-binAUR o dotnet-host) que contiene las herramientas para consola de comandos, y puede instalarlo con cualquiera de los SDK o Runtimes disponibles (últimos paquetes de cada versión principal). Aquí tiene una lista con los paquetes compatibles:
- dotnet-host-binAUR, dotnet-runtime-binAUR, aspnet-runtime-binAUR, dotnet-sdk-binAUR
- dotnet-host-preview-binAUR, dotnet-runtime-preview-binAUR, aspnet-runtime-preview-binAUR, dotnet-sdk-preview-binAUR
- dotnet-runtime-3.0AUR, aspnet-runtime-3.0AUR, dotnet-sdk-3.0AUR,
- dotnet-runtime-2.2AUR, aspnet-runtime-2.2AUR, dotnet-sdk-2.2AUR, dotnet-sdk-2.2-vs2017AUR
- dotnet-runtime-2.1AUR, aspnet-runtime-2.1AUR, dotnet-sdk-2.1AUR
Instalación de PowerShell Core
Puede instalar PowerShell Core como una herramienta «global» ([1] [2]):
# dotnet tool install --global PowerShell
Para actualizarlo a la versión actual:
# dotnet tool update --global PowerShell
Recolección de datos
La recoleccion de datos (telemetry) está habilitada de manera predeterminada, pero se puede deshabilitar estableciendo la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT=1
.
Completado por tabulación
Todos los programas de dotnet que ocupan System.CommandLine.Parser
para parsear sus argumentos tienen soporte para completado automático. Para habilitarlo, solo tiene que añadir unas lineas a su archivo .bashrc
/ .zshrc
, como se describe en la documentación. Aquí tiene instrucciones para usar el paquete correspondiente.
Solución de problemas
No se puede encontrar ninguna versión del framework compatible
Si obtiene el siguiente error cuando intenta ejecutar un proyecto nuevo, es porque ya no es necesario que se establezca la variable DOTNET_ROOT
, al contrario de las soluciones para varios problemas en GitHub. El paquete de Arch Linux (desde la versión 3.1) instala las versiones en /usr/share/dotnet
, como recomienda Microsoft.
$ dotnet run
It was not possible to find any compatible framework version The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found. - No frameworks were found. You can resolve the problem by installing the specified framework and/or SDK. The specified framework can be found at: - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=arch-x64
Esto sucede porque el runtime es distribuido en un paquete aparte en Arch Linux. Asegúrese de tener instalado el paquete aspnet-runtime.
Error "the required library libhostfxr.so could not be found"
Algunas de las herramientas del SDK de dotnet (por ejemplo, libman, dotnet-watch, etc.) asumen que tiene establecida la variable de entorno DOTNET_ROOT
. Si no es así, se podría observar un error como este: [3]
A fatal error occurred, the required library libhostfxr.so could not be found. If this is a self-contained application, that library should exist in [/home/my_user/.dotnet/tools/.store/microsoft.web.librarymanager.cli/1.0.172/microsoft.web.librarymanager.cli/1.0.172/tools/netcoreapp2.1/any/]. If this is a framework-dependent application, install the runtime in the default location [/usr/share/dotnet] or use the DOTNET_ROOT environment variable to specify the runtime location.
La solución es exportar manualmente DOTNET_ROOT
en su shell:
~/.bashrc
export DOTNET_ROOT=/opt/dotnet
Sucede después de actualizar la versión. La sesión en su shell tiene las variables de entorno de un SDK de dotnet distintas a las que tiene el actualmente instalado. Reinicie su shell o inicie sesión nuevamente para arreglarlo.
No se pudo encontrar el SDK especificado
Se cree que esto es causado por un conflicto entre las librerías Mono y MSBuild SDK y las de dotnet core. Para corregir esto, exporte la ruta manualmente en su shell (reemplazando el número de versión según sea necesario), por ejemplo:
~/.bashrc
export MSBuildSDKsPath=$( echo /usr/share/dotnet/sdk/3.*/Sdks );