configuración del entorno dotnetup

Note

dotnetup está en versión preliminar pública. Sus características y comportamiento pueden cambiar antes de la disponibilidad general.

Dotnetup puede configurar el entorno para que los SDK de .NET y los entornos de ejecución que instale estén disponibles. Para ello, establece las siguientes variables de entorno:

  • PATH: hace que el comando dotnet esté disponible en la línea de comandos. Las herramientas de desarrollo, como Visual Studio o el Kit de desarrollo de C#, también usan PATH para buscar sdk y entornos de ejecución de .NET.
  • DOTNET_ROOT: indica a los ejecutables de aplicación dependientes de la plataforma dónde encontrar una instalación de .NET y sus entornos de ejecución compartidos.

Dotnetup admite diferentes modos de acceso que controlan dónde se establecen estas variables de entorno. Puede elegir un modo de acceso en la configuración inicial de dotnetup o más tarde con el comando dotnetup env.

Modo de acceso Behavior
none No modifica estas variables de entorno. Ejecute .NET con dotnetup dotnet.
shell Modifica el perfil de shell para establecer estas variables de entorno. Los procesos iniciados desde ese shell usan los SDK y los entornos de ejecución de .NET instalados por dotnetup.
everywhere Modifica el sistema PATH y establece la variable de entorno de usuario de nivel DOTNET_ROOT. Solo está disponible en Windows.

De forma predeterminada, dotnetup también se agrega a PATH, independientemente de la configuración del modo de acceso. Esto se puede controlar con dotnetup env set --dotnetup-on-path <true|false>.

Consideraciones sobre el modo Everywhere

El modo Everywhere es el valor predeterminado en Windows para que los SDK y los entornos de ejecución instalados por dotnetup estén disponibles desde las herramientas de desarrollo y desde los terminales que usan cmd como shell. Sin embargo, hay algunas cosas que debe tener en cuenta, principalmente en torno a cómo interactúa con las instalaciones a nivel de sistema del SDK y el entorno de ejecución de .NET.

Las instalaciones para todo el equipo de .NET se encuentran en la carpeta Archivos de programa. Se pueden instalar con instaladores que se pueden descargar desde la página de descargas de .NET. Visual Studio instala el SDK y el entorno de ejecución de .NET para todo el equipo, y los instaladores para aplicaciones dependientes de la plataforma también pueden instalar el Runtime de .NET del que dependen para todo el equipo.

En el modo en todas partes, la raíz de instalación de .NET administrada por dotnetup para el usuario tendrá prioridad sobre la raíz de instalación de .NET en toda la máquina. Esto significa que los .NET SDKs y entornos de ejecución instalados en Program Files no estarán disponibles. Los proyectos que dependen de esos SDK no se compilarán si no está instalado un SDK coincidente. Si no se instala un runtime coincidente, las aplicaciones dependientes del framework no se iniciarán con un error que indica "Debe instalar o actualizar .NET para ejecutar esta aplicación".

Para evitar estos fallos, la configuración inicial de dotnetup ofrece la opción de migrar las instalaciones existentes del SDK y del Runtime de .NET del sistema. También puede migrarlos explícitamente ejecutando dotnetup sdk install --migrate-from-system para los SDK o dotnetup runtime install --migrate-from-system para entornos de ejecución.

Activar o desactivar el modo Everywhere requiere modificar el path del sistema, lo que requiere elevación (es decir, una aprobación de solicitud de UAC o "Ejecutar como administrador"). Esto se debe a que los instaladores para todo el equipo de .NET agregan la raíz de instalación de Program Files .NET a la ruta de acceso del sistema, y la ruta de acceso del sistema tiene prioridad sobre la ruta de acceso de nivel de usuario al resolver comandos. Por lo tanto, dotnetup debe modificar el path del sistema para que la raíz de instalación de dotnetup .NET tenga prioridad.

Dado que PATH del sistema se aplica a todos los usuarios, estos cambios pueden afectar a otros usuarios. La ruta de acceso que se agrega al path del sistema está de forma predeterminada en la carpeta AppData local del usuario. Normalmente, esto no será accesible para otros usuarios, por lo que no afectaría a qué versión de dotnet se resuelve. Sin embargo, los procesos elevados (es decir, ejecutar como administrador) podrían leer la ruta de acceso y podrían terminar resolviendo inesperadamente .NET SDK o runtimes de otro usuario.

Shells compatibles

Soporte para la generación de perfiles y scripts:

  • Bash
  • Z shell
  • Pez
  • Pwsh (PowerShell Core)
  • PowerShell

Si no especifica --shell, dotnetup detecta el shell actual. Utilice un shell explícito cuando la detección no esté disponible o cuando desee actualizar un perfil diferente:

dotnetup env set shell --shell zsh

Estado almacenado y observado

dotnetup.config.json almacena el modo de acceso seleccionado y si dotnetup debe estar en PATH. dotnetup env show compara esa configuración con el perfil y el entorno actuales. Notifica el desfase si el estado observado no coincide.

Vuelva a aplicar la configuración almacenada para corregir el desfase:

dotnetup env set

Terminal en uso

Los cambios del perfil y del entorno de Windows no vuelven a escribir el entorno del proceso actual. Abra un nuevo terminal, cargue el perfil modificado o evalúe el script generado.

Para el shell de Bash o Z:

eval "$(dotnetup env script)"

Para PowerShell:

dotnetup env script --shell pwsh | Invoke-Expression

env script sigue la configuración almacenada cuando no se pasan las opciones de selección. Usa --dotnet, --dotnetup o ambos para seleccionar el contenido generado.

Eliminar la configuración del entorno

Quite toda la configuración de conexiones del entorno administrado:

dotnetup env clear

Este comando es equivalente a:

dotnetup env set none --dotnetup-on-path false

No desinstala los SDK ni los entornos de ejecución.