Inicio rápido: Creación y publicación de un paquete NuGet mediante Visual Studio (solo Windows)

En este inicio rápido, usará Microsoft Visual Studio para crear un paquete NuGet a partir de una biblioteca de clases de .NET. A continuación, publique el paquete en nuget.org mediante una herramienta de interfaz de línea de comandos (CLI).

Este inicio rápido es solo para Windows usuarios. Si usa otra plataforma, emplee la CLI .NET.

Prerequisites

  • Visual Studio 2026 con una carga de trabajo relacionada con .NET.

    Puede instalar la edición 2026 Community de forma gratuita desde visualstudio.microsoft.com, o bien puede usar la edición Professional o Enterprise.

    Visual Studio 2017 y versiones posteriores incluyen automáticamente funcionalidades de NuGet al instalar una carga de trabajo relacionada con .NET.

  • CLI de .NET.

    Para Visual Studio 2017 y versiones posteriores, la CLI de .NET se instala automáticamente con cualquier carga de trabajo relacionada con .NET. También puede instalar .NET SDK para obtener la CLI de .NET. La CLI de .NET es necesaria para .NET proyectos que usan el formato de estilo SDK (y un atributo SDK). La plantilla de biblioteca de clases .NET predeterminada en Visual Studio 2017 y versiones posteriores usa el atributo SDK.

    Importante

    Si trabaja con un proyecto que no es de estilo SDK, siga los procedimientos descritos en Crear y publicar un paquete mediante Visual Studio (.NET Framework, Windows) en su lugar para crear y publicar el paquete. Para este artículo, se recomienda la CLI de .NET. Aunque puede publicar cualquier paquete NuGet mediante la CLI de NuGet, algunos de los pasos de este artículo son específicos de los proyectos de estilo SDK y la CLI de .NET. La CLI de NuGet se utiliza para proyectos de estilo no-SDK (normalmente proyectos del .NET Framework).

  • Una cuenta gratuita en nuget.org. Debe registrar y confirmar la cuenta para poder cargar un paquete NuGet.

  • La CLI de NuGet. Para instalarlo, descárguelo desde nuget.org. Agregue el archivo nuget.exe a una carpeta adecuada y agregue esa carpeta a la PATH variable de entorno.

Creación de un proyecto de biblioteca de clases

Puede usar un proyecto de biblioteca de clases de .NET existente para el código que desea empaquetar o puede crear uno siguiendo estos pasos:

  1. En Visual Studio, seleccione File>New>Project/Solution.

  2. En la ventana Crear un nuevo proyecto , vaya al cuadro de búsqueda y escriba la biblioteca de clases.

  3. En la lista resultante de plantillas de proyecto, seleccione la plantilla Biblioteca de clases que cumple los siguientes criterios:

    • Tiene la descripción A proyecto para crear una biblioteca de clases que tenga como destino .NET o .NET Standard
    • Tiene una etiqueta de C#

    Seleccione Siguiente.

  4. En la ventana Configurar la nueva ventana project para Project name, escriba AppLogger y, a continuación, seleccione Next.

  5. En la ventana Información adicional , seleccione un valor adecuado para Framework y, a continuación, seleccione Crear.

    Si no está seguro de qué marco seleccionar, la versión más reciente es una buena opción y se puede cambiar fácilmente más adelante. Para obtener información sobre qué marco va a usar, consulte Cuándo se debe establecer como destino netx.0 frente a netstandard.

  6. (Opcional) Para este inicio rápido, no es necesario escribir ningún código adicional para el paquete NuGet, ya que la biblioteca de clases de plantilla es suficiente para crear un paquete. Sin embargo, si desea agregar código funcional al paquete, incluya el código siguiente:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    

Configurar las propiedades del paquete

Después de crear el proyecto, puede configurar las propiedades del paquete NuGet siguiendo estos pasos:

  1. En Solution Explorer, seleccione el project y, a continuación, seleccione Project><project-name> Properties, donde <project-name> es el nombre del project.

  2. Expanda el nodo Paquete y, a continuación, seleccione General.

    El nodo Package solo aparece para proyectos de estilo SDK en Visual Studio. Si se dirige a un proyecto de estilo no-SDK (normalmente proyectos de .NET Framework), migrar el proyecto o vea Crear y publicar un paquete mediante Visual Studio (.NET Framework, Windows) para obtener instrucciones paso a paso.

    Captura de pantalla de una ventana de propiedades de proyecto en Visual Studio. Se pueden ver las propiedades generales de un paquete NuGet, como el identificador del paquete y el título.

  3. En Id. de paquete, asigne un identificador único al paquete.

    Importante

    Debe proporcionar al paquete un identificador único en el host que use, como nuget.org. De lo contrario, se produce un error. Para este inicio rápido, se recomienda incluir Sample o Test en el identificador, ya que el paso de publicación hace que el paquete sea visible públicamente. Para obtener más información sobre cómo seleccionar un identificador, consulte Procedimientos recomendados para el identificador del paquete.

  4. Rellene las demás propiedades deseadas. En el caso de los paquetes creados para el consumo público, preste especial atención a la propiedad Tags , ya que las etiquetas ayudan a otros usuarios a encontrar el paquete y a comprender lo que hace.

    Todas las propiedades entran en el manifiesto .nuspec que Visual Studio crea para el proyecto. Para obtener una tabla que muestre cómo las propiedades de Microsoft Build (MSBuild) en proyectos de estilo SDK se asignan a las propiedades de archivos .nuspec, consulte pack target. Para obtener una descripción de las propiedades del archivo .nuspec , vea Referencia de .nuspec.

  5. (Opcional) Para ver las propiedades directamente en el archivo de proyecto AppLogger.csproj, seleccione Proyecto>Editar archivo de proyecto.

    El archivo AppLogger.csproj se abre en una nueva pestaña.

    Esta opción está disponible para proyectos que usan el atributo de estilo SDK.

Ejecutar el comando pack

Para crear un paquete NuGet desde el proyecto, siga estos pasos:

  1. Seleccione Build>Configuration Manager y, a continuación, establezca la configuración de la solución Active en Release.

  2. En Solution Explorer, haga clic con el botón derecho en el proyecto AppLogger y seleccione Pack.

    Visual Studio compila el proyecto y crea el archivo .nupkg.

  3. Examine la ventana Salida para obtener información detallada, incluida la ruta de acceso al archivo de paquete. En este ejemplo, el ensamblado compilado está en la carpeta bin\Release\net8.0, que es adecuada para un destino de .NET 8.0:

    1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------
    1>  AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net8.0\AppLogger.dll
    1>  Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\Contoso.App.Logger.Test.1.0.0.nupkg'.
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
    

Si falta el comando Pack en el menú, es probable que el proyecto no sea un proyecto de estilo SDK. Realice uno de los pasos siguientes:

(Opcional) Generación de un paquete en la compilación

Puede configurar Visual Studio para generar automáticamente el paquete NuGet al compilar el proyecto:

  1. Seleccione el project en Solution Explorer, y, a continuación, seleccione Project><project-name> Properties, donde <project-name> es el nombre del project (AppLogger en este caso).

  2. Expanda el nodo Paquete , seleccione General y, a continuación, seleccione Generar paquete NuGet al compilar.

    Screenshot de una ventana de propiedades del proyecto en Visual Studio. En la sección Propiedades generales, la opción Generar paquete NuGet al compilar está seleccionada.

Nota:

Al seleccionar esta opción, el tiempo adicional necesario para generar el paquete aumenta el tiempo de compilación general del proyecto.

(Opcional) Empaquetar con MSBuild

Como alternativa al uso del comando de menú Pack , puede usar el msbuild -t:pack comando para compilar un paquete NuGet desde el proyecto. NuGet 4.x+ y MSBuild 15.1+ soportan un pack objetivo si tu proyecto contiene los datos de paquete necesarios.

  1. Con el proyecto abierto en Solution Explorer, abra una ventana del símbolo del sistema seleccionando Herramientas>Línea de Comandos>Símbolo del sistema para desarrolladores.

    Se abre la ventana del símbolo del sistema en el directorio del proyecto.

  2. Ejecute el siguiente comando: msbuild -t:pack.

Para obtener más información, consulte Creación de un paquete NuGet mediante MSBuild.

Publicación del paquete

Después de crear un archivo .nupkg, siga los pasos descritos en las secciones siguientes para publicarlo en nuget.org. Puede usar la CLI de .NET o la CLI de NuGet para su publicación. También se usa una clave de API que adquiere de nuget.org.

Nota:

  • Nuget.org escanea todos los paquetes subidos en busca de virus y rechaza cualquier paquete que contenga virus. Nuget.org también examina todos los paquetes enumerados existentes periódicamente.

  • Los paquetes que publique en nuget.org son visibles para otros desarrolladores, a menos que los quite de la lista. Para hospedar paquetes de forma privada, consulte Hospedaje de fuentes de NuGet propias.

Adquisición de la clave de API

Antes de publicar el paquete NuGet, cree una clave de API:

  1. Inicie sesión en su cuenta de nuget.org o cree una cuenta si aún no tiene una.

  2. En la esquina superior derecha, seleccione el nombre de usuario y, a continuación, seleccione Claves de API.

  3. Seleccione Crear y escriba un nombre para la clave.

  4. En Seleccionar ámbitos, seleccione Push.

  5. Bajo Seleccionar paquetes, para Patrón Glob, escriba un asterisco (*).

  6. Selecciona Crear.

  7. Seleccione Copiar para copiar la nueva clave.

    Captura de pantalla de una página de nuget.org que muestra la nueva clave de API, un mensaje sobre cómo copiar la clave ahora y el botón Copiar, que está resaltado.

Importante

  • Mantenga siempre la clave de API en un secreto. La clave de API es como una contraseña que cualquier usuario puede usar para administrar paquetes en su nombre. Elimine o regenere la clave de API si se revela accidentalmente.
  • Guarde la clave en una ubicación segura, ya que no puede volver a copiar la clave más adelante. Si vuelve a la página clave de API, debe volver a generar la clave para copiarla. También puede quitar la clave de API si ya no desea insertar paquetes.

La delimitación proporciona una manera de crear claves de API independientes con distintos fines. Cada clave tiene un período de caducidad y puedes limitar el uso de la clave a paquetes específicos o a patrones glob. También puede limitar cada clave a operaciones específicas: insertar nuevos paquetes y versiones de paquete, insertar solo nuevas versiones de paquete o anular la lista.

A través del ámbito, puede crear claves de API para diferentes personas que administran paquetes para su organización para que solo tengan los permisos que necesitan.

Para obtener más información, consulte las Claves de API con ámbito.

Publicación mediante la CLI de .NET o la CLI de NuGet

Puede usar la CLI de .NET o la CLI de NuGet para insertar un paquete en el servidor y publicarlo. Vaya a la pestaña de la herramienta que desea usar.

La CLI de .NET (dotnet.exe) es la alternativa recomendada a la CLI de NuGet.

En la carpeta que contiene el archivo .nupkg , ejecute el siguiente comando. Reemplace <package-file> por el nombre del archivo .nupkg y reemplace por <API-key> la clave de API.

dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json

La salida muestra los resultados del proceso de publicación:

Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
  Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.

Para obtener más información, consulte dotnet nuget push.

Errores durante la publicación

Al ejecutar el push comando, a veces se produce un error. Por ejemplo, es posible que reciba un error en las situaciones siguientes:

  • La clave de API no es válida o ha expirado.
  • Intenta publicar un paquete que tenga un identificador que ya existe en el host.
  • Realiza cambios en un paquete publicado, pero se olvida de actualizar el número de versión antes de intentar publicarlo de nuevo.

El mensaje de error suele indicar el origen del problema.

Por ejemplo, supongamos que el identificador Contoso.App.Logger.Test existe en nuget.org. Si intenta publicar un paquete con ese identificador, obtendrá el siguiente error:

Response status code does not indicate success: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.).

Para solucionar esta situación, compruebe el ámbito, la fecha de expiración y el valor de la clave de API. Si la clave es válida, el error indica que el identificador del paquete ya existe en el host. Para solucionar el problema, cambie el identificador del paquete para que sea único, recompile el proyecto, vuelva a crear el archivo .nupkg y vuelva a intentar el push comando.

Administrar el paquete publicado

Cuando el paquete se publique correctamente, recibirá un correo electrónico de confirmación. Para ver el paquete publicado, vaya a nuget.org, seleccione el nombre de usuario en la esquina superior derecha y, a continuación, seleccione Administrar paquetes.

Nota:

El paquete puede tardar un tiempo en indizarse y aparecer en los resultados de búsqueda donde otros pueden encontrarlo. Durante ese tiempo, el paquete aparece en Paquetes no registrados y la página del paquete muestra el mensaje siguiente:

Captura de pantalla de un mensaje de advertencia de nuget.org sobre el paquete que aún no se está publicando. El texto indica que la validación y la indexación pueden tardar una hora.

Ahora que el paquete NuGet se publica en nuget.org, otros desarrolladores pueden usarlo en sus proyectos.

Si crea un paquete que no es útil (por ejemplo, este paquete de ejemplo desde una biblioteca de clases vacía) o si no desea que el paquete sea visible, puede anular la lista del paquete para ocultarlo de los resultados de la búsqueda:

  1. Después de que el paquete aparezca en Paquetes publicados en la página Administrar paquetes , seleccione el icono de lápiz situado junto a la lista de paquetes.

    Captura de pantalla de la página Paquetes de nuget.org. En la sección Paquetes publicados se muestra un paquete. Su icono de edición está resaltado.

  2. En la página siguiente, seleccione Lista, desactive la casilla Lista en los resultados de búsqueda y, a continuación, seleccione Guardar.

    Captura de pantalla de una página de nuget.org. En la sección Lista, se resalta la opción para enumerar el paquete en los resultados de búsqueda.

El paquete aparece ahora en Paquetes no registrados en Administrar paquetes y ya no aparece en los resultados de búsqueda.

Nota:

Para evitar que el paquete de prueba esté activo en nuget.org, puede enviarlo al sitio de pruebas de nuget.org en https://int.nugettest.org. Tenga en cuenta que los paquetes cargados en int.nugettest.org podrían no conservarse.

Agregar un archivo read-me u otro archivo

Puede incluir un archivo read-me u otros archivos en el paquete.

Agregar un archivo de lectura

Para agregar un archivo de lectura al paquete, siga estos pasos:

  1. Abra el archivo del proyecto seleccionando Project>Editar archivo de proyecto.

  2. En el archivo del proyecto, vaya al PropertyGroup elemento y agregue un PackageReadmeFile elemento secundario:

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            ...
            <PackageReadmeFile>readme.md</PackageReadmeFile>
            ...
        </PropertyGroup>
    </Project>
    
  3. Vaya al ItemGroup elemento y agregue un None elemento secundario:

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            ...
            <PackageReadmeFile>readme.md</PackageReadmeFile>
            ...
        </PropertyGroup>
    
        <ItemGroup>
            ...
            <None Include="readme.md" Pack="true" PackagePath="\" />
            ...
        </ItemGroup>
    </Project>
    

En el ejemplo anterior, la propiedad especifica un archivo denominado readme.md en la raíz del proyecto. Después de compilar, empaquetar y publicar el paquete, nuget.org muestra el contenido del archivo read-me en la página del paquete. Visual Studio también muestra el contenido de ese archivo en la interfaz de usuario de Package Manager.

Por ejemplo, en la captura de pantalla siguiente se muestra el archivo read-me del HtmlAgilityPack paquete:

Captura de pantalla de la interfaz de usuario de Visual Studio Package Manager que muestra un panel de detalles del paquete. En la pestaña Léame se describen las capacidades de análisis HTML del paquete.

Agregar otros archivos

Para agregar otros archivos a un paquete, abra el archivo de proyecto seleccionando Proyecto>Editar archivo de proyecto. A continuación, agregue un Content elemento secundario al ItemGroup elemento :

<ItemGroup>
  <Content Include="other-content.md">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>

Para obtener más información, consulte Incluir contenido en un paquete.

Para obtener vídeos sobre el uso de NuGet para la administración de paquetes, consulte .NET Administración de paquetes con NuGet para principiantes y NuGet para principiantes.

Para obtener información sobre cómo crear un paquete NuGet con Visual Studio .NET Framework, consulte Crear un paquete mediante la CLI de nuget.exe.

Para obtener más información sobre NuGet, consulte los siguientes artículos: