.NET Core (Español)

From ArchWiki
Esta traducción de .NET Core fue revisada el 2021-09-13. Si existen cambios puede actualizarla o avisar al equipo de traducción.

.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:

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

Error MSB4019: The imported project "/usr/share/dotnet/sdk/.../Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets" was not found. Confirm that the expression in the Import declaration ... is correct, and that the file exists on disk.

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 );

Véase también