Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo se aplica a: ✔️ sdk de .NET 8 y versiones posteriores
En este tutorial se explica cómo crear y empaquetar una herramienta .NET. La CLI de .NET le permite crear una aplicación de consola como herramienta, que otras pueden instalar y ejecutar. Las herramientas de .NET son paquetes NuGet que se instalan desde la CLI de .NET. Para obtener más información sobre las herramientas, consulte Introducción a las herramientas de .NET.
La herramienta que va a crear es una aplicación de consola que toma información sobre el entorno de .NET actual y la muestra, incluida la versión de .NET, los detalles del sistema operativo y la configuración de variables de entorno clave.
Este tutorial es el primero en una serie de tres tutoriales. En este tutorial, crea y empaqueta una herramienta. En los dos tutoriales siguientes, usará la herramienta como herramienta global y usará la herramienta como herramienta local. Los procedimientos para crear una herramienta son los mismos si se usa como una herramienta global o como una herramienta local.
Prerrequisitos
.NET SDK 10.0 o una versión posterior.
En este tutorial se usa .NET SDK 10.0, pero esta guía se aplica a .NET 8.0 y versiones posteriores.
El editor de texto o de código que elija.
Creación de un proyecto
Abra un símbolo del sistema y cree una carpeta denominada repositorio.
Vaya a la carpeta del repositorio y escriba el siguiente comando:
dotnet new console -n dotnet-envEl comando crea una nueva carpeta denominada dotnet-env en la carpeta del repositorio .
Vaya a la carpeta dotnet-env .
cd dotnet-env
Agregar el código
Abra el archivo Program.cs con el editor de código.
Reemplace el contenido por el código siguiente:
using System.Reflection; using System.Runtime.InteropServices; var versionString = Assembly.GetEntryAssembly()? .GetCustomAttribute<AssemblyInformationalVersionAttribute>()? .InformationalVersion .ToString(); Console.WriteLine($"dotnet-env v{versionString}"); Console.WriteLine(new string('-', 40)); Console.WriteLine(); Console.WriteLine("Runtime"); Console.WriteLine($" .NET Version {Environment.Version}"); Console.WriteLine($" Framework {RuntimeInformation.FrameworkDescription}"); Console.WriteLine($" Runtime Identifier {RuntimeInformation.RuntimeIdentifier}"); Console.WriteLine(); Console.WriteLine("System"); Console.WriteLine($" OS {RuntimeInformation.OSDescription}"); Console.WriteLine($" Architecture {RuntimeInformation.OSArchitecture}"); Console.WriteLine($" Machine Name {Environment.MachineName}"); Console.WriteLine($" Processor Count {Environment.ProcessorCount}"); Console.WriteLine(); Console.WriteLine("Environment Variables"); string[] envVars = { "DOTNET_ROOT", "DOTNET_HOST_PATH", "DOTNET_CLI_HOME", "DOTNET_NOLOGO", "NUGET_PACKAGES", "DOTNET_ENVIRONMENT" }; foreach (string name in envVars) { string? value = Environment.GetEnvironmentVariable(name); Console.WriteLine($" {name,-24}{value ?? "(not set)"}"); }El programa usa instrucciones de nivel superior para leer la versión informativa del ensamblado mediante
Assembly.GetEntryAssembly()yAssemblyInformationalVersionAttribute, luego imprime el nombre de la aplicación y una línea separadora antes de mostrar tres secciones de información:-
Runtime: la versión de .NET, la descripción del marco y el identificador en tiempo de ejecución, mediante
Environment.VersionyRuntimeInformation. - Sistema : descripción del sistema operativo, arquitectura, nombre de máquina y recuento de procesadores.
-
Variables de entorno: seis variables clave relacionadas con .NET (
DOTNET_ROOT,DOTNET_HOST_PATH,DOTNET_CLI_HOME,DOTNET_NOLOGO,NUGET_PACKAGESyDOTNET_ENVIRONMENT), mostrando(not set)para los que no estén configurados.
La
using System.Reflectiondirectiva es necesaria paraAssembly.GetEntryAssembly()yAssemblyInformationalVersionAttribute. Lausing System.Runtime.InteropServicesdirectiva es necesaria paraRuntimeInformation.-
Runtime: la versión de .NET, la descripción del marco y el identificador en tiempo de ejecución, mediante
Guarde los cambios.
Prueba de la aplicación
Ejecute el proyecto y vea la salida:
dotnet run
El resultado es similar al ejemplo siguiente:
dotnet-env v1.0.0
----------------------------------------
Runtime
.NET Version 10.0.4
Framework .NET 10.0.4
Runtime Identifier win-x64
System
OS Microsoft Windows 10.0.22631
Architecture X64
Machine Name MY-MACHINE
Processor Count 16
Environment Variables
DOTNET_ROOT (not set)
DOTNET_HOST_PATH (not set)
DOTNET_CLI_HOME (not set)
DOTNET_NOLOGO (not set)
NUGET_PACKAGES (not set)
DOTNET_ENVIRONMENT (not set)
Nota:
Los valores que se muestran dependen de la máquina y .NET instalación. La salida varía según la plataforma.
Empaquetar la herramienta
Para empaquetar y distribuir la aplicación como una herramienta, modifique el archivo del proyecto.
Abra el archivo dotnet-env.csproj y agregue tres nodos XML nuevos al final del
<PropertyGroup>nodo:<PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath><ToolCommandName>es un elemento opcional que especifica el comando que invoca la herramienta después de la instalación. Si no se proporciona este elemento, el nombre del comando de la herramienta es el nombre del ensamblado, que suele ser el nombre de archivo del proyecto sin la extensión .csproj .Nota:
Elija un valor único para
<ToolCommandName>. Evite usar extensiones de archivo (como.exeo.cmd) porque la herramienta está instalada como host de aplicación y el comando no debe incluir una extensión. Esto ayuda a evitar conflictos con comandos existentes y garantiza una experiencia de instalación fluida.<PackageOutputPath>es un elemento opcional que determina dónde .NET genera el paquete NuGet. La CLI de .NET usa el paquete NuGet para instalar la herramienta.El archivo de proyecto ahora es similar al ejemplo siguiente:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>Cree un paquete NuGet ejecutando el comando dotnet pack :
dotnet packEl archivo dotnet-env.1.0.0.nupkg se crea en la carpeta identificada por el
<PackageOutputPath>valor del archivo dotnet-env.csproj , que en este ejemplo es la carpeta ./nupkg .Para liberar una herramienta públicamente, cárguelo en
https://www.nuget.org. Una vez que la herramienta esté disponible en NuGet, los desarrolladores pueden instalar la herramienta mediante el comando dotnet tool install . En este tutorial se instala el paquete directamente desde la carpeta nupkg local, por lo que no es necesario cargar el paquete en NuGet.
Solución de problemas
Si recibe un mensaje de error al seguir el tutorial, consulte Solución de problemas de uso de herramientas de .NET.
Pasos siguientes
En este tutorial, ha creado una aplicación de consola y la ha empaquetado como una herramienta. Para aprender a usar la herramienta como herramienta global, vaya al siguiente tutorial.
Si lo prefiere, puede omitir el tutorial de herramientas globales y ir directamente al tutorial de herramientas locales.