1. Antes de empezar: ¿Qué necesitamos?
Para que todo fluya sin sorpresas, asegúrate de tener ya instalado:
.NET SDK 6.0+ instalado en tu máquina.
Visual Studio 2022 (o superior) con acceso al Package Manager Console.
Un Personal Access Token (PAT) de Azure DevOps con permisos de Packaging (Read & write).
En tu organización de Azure DevOps (organizacion <>), un proyecto (proyecto<>) y un feed llamado UtilidadFecha, para ello:
Debes ir Azure DevOps en la seccion de Feed, crea uno, luego ve a la seccion de connect to feed y copia el URL segun corresponde:
https://pkgs.dev.azure.com/<organizacion>/<proyecto>/_packaging/<nombredelfeed>/nuget/v3/index.json
esa misma url se usa dentro del archivo
2. Configura tu nuget.config
Piensa en este archivo como tu mapa de ruta: le dice a dotnet
dónde buscar o enviar paquetes. Crea un nuget.config
en la raíz de ambos proyectos (librería y consumidor) con este contenido:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- Fuente pública (opcional) -->
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<!-- Tu feed privado, ahora key="AzureDevOps" -->
<add key="AzureDevOps"
value="https://pkgs.dev.azure.com/<>/<>/_packaging/UtilidadFecha/nuget/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<AzureDevOps>
<!-- Credenciales para Azure Artifacts -->
<add key="Username" value="antonio" />
<add key="ClearTextPassword" value="PAT" />
</AzureDevOps>
</packageSourceCredentials>
</configuration>
Recuerda reemplazar TU_PAT_AZURE_DEVOPS
con tu token real, para crear el token debes ir a Azure DevOps, a par de tu nombre, puedes seleccionar -> personal access token, asignale un nombre, una duración, y luego selecciona los permisos, puedes dejarlo como full access para esta prueba.
3. Crea tu librería NuGet
Abre una terminal y navega a la carpeta donde quieras generar la librería:
Copia allí el nuget.config
que preparaste.
Abre (o crea) el archivo InfoSistema.cs
y pega este código:
using System;
using System.Linq;
using System.Net;
using System.Net.Sockets;
namespace UtilidadFecha
{
public static class InfoSistema
{
public static string ObtenerFechaHoraUtc() =>
DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
public static string ObtenerIpLocal()
{
var host = Dns.GetHostName();
var ipv4 = Dns.GetHostEntry(host)
.AddressList
.FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
return ipv4?.ToString() ?? "IP no encontrada";
}
}
}
Añade los metadatos NuGet en tu .csproj
para que dotnet pack
entienda qué empacar:
4. Empaqueta y publica:
dotnet build
para saber que todo este funcionanado correctamente, y si existiera algun error corregirlo oportunamente
Empaqueta en modo Release:
Sube tu paquete al feed privado, que has creado con anticipacion
El --api-key az
es un comodín: la autenticación ya está en tu config.
Entra al portal de Azure DevOps y verifica que tu paquete UtilidadFecha 1.0.0 esté allí.
o tambien, puedes acceder a el desde un navegador, con tu url:
https://pkgs.dev.azure.com/<organizacion>/<proyecto>/_packaging/<nombredelfeed>/nuget/v3/index.json
el cual devuelve una salida tipo JSON con la información de tu feed
5. Consume tu paquete en otro proyecto
Crea un proyecto de consola (o el que prefieras):
Install-Package UtilidadFecha -Version 1.0.0 -Source AzureDevOps
Abre Program.cs
y úsalo así:
Ejecuta con dotnet run
y… listo Deberías ver tu fecha e IP local en pantalla.
6. ¿Y si hay cambios?
Cuando quieras lanzar una versión nueva (por ejemplo, 1.1.0):
En la librería, sube el <Version>
en el .csproj
a 1.1.0
.
Repite Empaquetar y Publicar (pasos anteriores).
En el proyecto consumidor, ejecuta:
Vuelve a dotnet run
y verás los cambios al vuelo.
Y eso es todo 🎉
Ahora tienes un flujo completo, paso a paso, explicando cómo crear, publicar, consumir y actualizar tu propio paquete NuGet en Azure DevOps, con un lenguaje más cercano y sin jerga innecesaria.
Documentación necesaria:
Nuget Artifacts Azure DevOps
Refencia del config file