Publicación de paquetes NuGet

Una vez que cree un paquete NuGet y tenga un archivo .nupkg, puede poner el paquete a disposición de otros desarrolladores de forma pública o privada. En este artículo se describe cómo compartir paquetes públicos globalmente a través de nuget.org.

También puede poner los paquetes privados a disposición de un solo equipo u organización mediante su hospedaje, ya sea en un recurso compartido de archivos, un servidor privado de NuGet, o un repositorio de terceros como myget, ProGet, Nexus Repository o Artifactory. Para obtener más información, consulte Hospedaje de sus propios feeds de NuGet. Para publicar con Azure Artifacts, consulte Publicación de paquetes en NuGet.org.

Publicar en nuget.org

Para publicar en nuget.org, inicie sesión en nuget.org con una cuenta de Microsoft y úsela para crear una cuenta gratuita de nuget.org. Siga las instrucciones que aparecen en Adición de una nueva cuenta individual.

Screenshot that shows the NuGet sign in link.

Una vez que tenga una cuenta, puede publicar un paquete en nuget.org mediante el portal web de nuget.org, la CLI de dotnet o la versión 4.1.0 o posterior de la CLI de NuGet. También puede publicar paquetes a través de Azure Pipelines.

Carga en el portal web de nuget.org

Para cargar un paquete en el sitio web de nuget.org:

  1. Seleccione Cargar en el menú superior de nuget.org, vaya al paquete del equipo y seleccione Abrir.

    Screenshot that shows the Upload dialog on nuget.org

    Si el id. del paquete ya existe en nuget.org, verá un error. Cambie el identificador del paquete en el proceso de reempaquetado del proyecto e intente cargarlo de nuevo.

  2. Si el nombre del paquete está disponible, se abrirá la sección Comprobar para que pueda revisar los metadatos del manifiesto de paquete. Si incluyó un archivo Léame en el paquete, consulte la versión preliminar para asegurarse de que todo el contenido se representa correctamente.

    Para cambiar cualquiera de los metadatos, edite el archivo de proyecto o el archivo .nuspec, recompílelo, vuelva a empaquetar y cargue de nuevo el paquete.

  3. Cuando toda la información esté lista, seleccione Enviar.

Inserción mediante una línea de comandos

Para insertar paquetes en nuget.org con una línea de comandos, puede usar dotnet.exe o nuget.exe (v4.1.0 o superior), que implementan los protocolos de NuGet necesarios. Para obtener más información, consulte Protocolos de NuGet.

Para usar cualquiera de las líneas de comandos, primero debe obtener una clave de API de nuget.org.

Creación de 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. Seleccione el nombre de usuario (en la esquina superior derecha) y luego Claves de API.

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

  4. En Seleccionar ámbitos, seleccione Insertar.

  5. En Seleccionar paquetes>Patrón global, escriba *.

  6. Seleccione Crear.

  7. Seleccione Copiar para copiar la clave nueva.

    Screenshot that shows the new API key with the Copy link.

Importante

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

El ámbito le permite crear claves de API independientes con distintos fines. Cada clave tiene su período de expiración y su ámbito puede establecerse en paquetes específicos (o patrones globales). También puede limitar el uso de cada clave a operaciones específicas; por ejemplo, insertar nuevos paquetes y versiones de paquete, insertar solo nuevas versiones de paquete o quitar de la lista.

Gracias a esta limitación, puede crear claves de API para distintas personas que administran paquetes para su organización, de manera que solo tengan los permisos que necesiten.

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

Uso de la CLI de dotnet

En la carpeta que contiene el archivo .nupkg, ejecute el siguiente comando. Especifique el nombre de archivo .nupkg y reemplace el valor de clave por la clave de API.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

En la ventana de salida se muestran los resultados del proceso de publicación:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

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

Nota:

Si desea evitar que el paquete de prueba esté activo en nuget.org, puede insertarlo en el sitio de prueba de nuget.org en https://int.nugettest.org. Tenga en cuenta que es posible que no se conserven los paquetes que haya cargado en int.nugettest.org.

Uso de la CLI de NuGet

  1. En un símbolo del sistema, ejecute el siguiente comando, reemplazando <your_API_key> por la clave que obtuvo en nuget.org:

    nuget setApiKey <your_API_key>
    

    Este comando almacena la clave de API en la configuración de NuGet para no tener que volver a escribir la clave de API en el mismo equipo.

    Nota:

    Esta clave de API no se usa para autenticarse con fuentes privadas. Para administrar las credenciales para autenticarse con estos orígenes, consulte el comando nuget sources.

  2. Inserte el paquete mediante el comando siguiente:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publicación con Azure Pipelines

Puede insertar paquetes en nuget.org con Azure Pipelines como parte del proceso de integración continua e implementación continua (CI/CD). Para obtener más información, consulte Publicación de paquetes de NuGet con Azure Pipelines.

Publicación de un paquete firmado

Para enviar un paquete firmado, primero debe registrar el certificado que se usa para firmar el paquete. Si no cumple los requisitos del paquete firmado, nuget.org rechaza el paquete.

Límites de tamaño del paquete

Nuget.org tiene un límite de tamaño de paquete de aproximadamente 250 MB. Cuando se carga un paquete que supera ese límite, se muestra el siguiente error:

El archivo del paquete supera el límite de tamaño. Inténtelo de nuevo.

Si este paquete se inserta desde la línea de comandos, se genera el siguiente resultado:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Si recibe estos errores, considere la posibilidad de revisar el contenido del paquete para reducir su tamaño. Si va a empaquetar símbolos de depuración en el paquete, considere la posibilidad de publicarlos por separado. Otros recursos se pueden publicar por separado como uno o varios paquetes de dependencia para distribuirlos en fragmentos más pequeños.

Validación e indexación de paquetes

Los paquetes insertados en nuget.org se someten a varias validaciones, como las comprobaciones de virus. Igualmente, los paquetes que ya existen se examinan de forma periódica. Cuando el paquete haya aprobado todas las comprobaciones de validez, puede que tarde un poco en indexarse y en aparecer en los resultados de la búsqueda. Mientras se indexa el paquete, aparece en Paquetes no registrados y verá el siguiente mensaje en la página del paquete:

Screenshot of a message indicating that a package isn't yet published.

Una vez finalizadas la validación y la indexación, recibirá un correo electrónico en el que se le confirmará que el paquete se publicó correctamente. Si no se supera la comprobación de validez del paquete, la página de detalles del paquete se actualizará y mostrará el error correspondiente. Después, recibirá un correo electrónico en el que se le notificará este error.

La validación y la indexación del paquete suelen tardar menos de 15 minutos. Si la publicación de paquetes tarda más de lo esperado, compruebe el estado de nuget.org en status.nuget.org. Si todos los sistemas están operativos y el paquete no se publica correctamente en el plazo de una hora, póngase en contacto con nuget.org mediante el vínculo Ponerse en contacto con el soporte técnico en la página del paquete.

Para ver el estado del paquete, seleccione Administrar paquetes en el nombre de cuenta en la esquina superior derecha de nuget.org y seleccione el paquete en Paquetes publicados o Paquetes no registrados.

Administración de propietarios de paquetes en nuget.org

Los propietarios de paquetes tienen permisos completos para el paquete, incluidas la incorporación y la eliminación de otros propietarios, así como la publicación de actualizaciones.

Aunque el archivo .nuspec del paquete NuGet define a los autores del paquete, nuget.org no usa esos metadatos para definir la propiedad. En su lugar, nuget.org asigna la propiedad a la persona que publica el paquete, ya sea el usuario que inició sesión y que cargó el paquete o el usuario cuya clave de API se usó con dotnet push, nuget SetApiKey o nuget push.

Para cambiar la propiedad de un paquete, haga lo siguiente:

  1. Inicie sesión en nuget.org con la cuenta del propietario actual del paquete.

  2. Seleccione su nombre de cuenta, elija Administrar paquetes y expanda Paquetes publicados.

  3. Seleccione el paquete que quiere administrar y luego, a la derecha de la página del paquete, elija Administrar paquete.

  4. En la página de administración de paquetes, seleccione Propietarios.

  5. Realice una de las siguientes acciones:

    • Seleccione Eliminar para eliminar al propietario actual.

    • Para agregar un propietario en Agregar propietario, escriba el nombre de usuario y un mensaje y seleccione Agregar.

      Esta acción envía un correo electrónico a ese nuevo copropietario con un vínculo de confirmación. Una vez confirmado, esa persona tiene permisos completos para agregar y quitar propietarios Mientras no esté confirmado, en la sección Propietarios actuales esa persona aparece como “pendiente de aprobación”.

Para transferir la propiedad (por ejemplo, si se modifica la propiedad o se publica un paquete con una cuenta incorrecta), agregue al nuevo propietario. Una vez que se confirme la propiedad, es posible quitar el propietario antiguo de la lista.

Para asignar la propiedad a una empresa o a un grupo, cree una cuenta de nuget.org con un alias de correo electrónico que se reenvíe a los miembros correctos del equipo. Por ejemplo, varios paquetes de Microsoft ASP.NET son propiedad conjunta de las cuentas de Microsoft y aspnet.

En ocasiones, puede que un paquete no tenga un propietario activo. Por ejemplo, el propietario original podría haber dejado la empresa que creó el paquete. Si es el propietario legítimo de un paquete y necesita volver a obtener la propiedad, use el formulario de contacto en nuget.org para explicar su situación al equipo de NuGet. El equipo sigue un proceso para comprobar su propiedad, incluida la búsqueda del propietario existente, y puede enviarle una nueva invitación para convertirse en el propietario del paquete.

Pasos siguientes