Publicación de paquetes NuGet desde la línea de comandos mediante NuGet.exe

Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

En este artículo se explica cómo conectarse a los paquetes de fuente y publicación mediante dos flujos de autenticación: el proveedor de credenciales de Azure Artifacts para fuentes de su propia organización y un token de acceso personal (PAT) para fuentes hospedadas en otra organización.

Prerrequisitos

Configuración del proveedor de credenciales de Azure Artifacts

El proveedor de credenciales de Azure Artifacts habilita la autenticación segura en las fuentes de Azure Artifacts. Para usarlo con nuget.exe, primero debe agregarlo a la ruta de búsqueda del complemento de NuGet. Para obtener más información, consulte Instalación y detección de complementos. Una vez agregado el complemento, siga los pasos de instalación del sistema operativo:

Use uno de los métodos siguientes para instalar el proveedor de credenciales de Azure Artifacts:

Instalación manual

  1. Descargue la versión más reciente Microsoft.NetFx48.NuGet.CredentialProvider.zip.

  2. Extraiga el archivo ZIP.

  3. Copie la netfx carpeta del archivo extraído en %UserProfile%/.nuget/plugins/. La netfx carpeta es necesaria para nuget.exe compatibilidad.

Instalación mediante el script auxiliar

Como alternativa, puede usar el script del asistente automatizado para una instalación simplificada. Asegúrese de que tiene PowerShell 5.1 o posterior y, a continuación, ejecute:

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

Para obtener más información, consulte el repositorio Azure Artifacts Proveedor de credenciales.

Conexión a una fuente

Antes de poder publicar sus paquetes, configure su proyecto y conéctese a su fuente de distribución como se indica a continuación:

  1. Inicie sesión en la organización de Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione la fuente en el menú desplegable.

  3. Seleccione Conectar a la fuente y, a continuación, seleccione NuGet.exe en el panel de navegación izquierdo.

  4. Añada un archivo nuget.config a su proyecto, en la misma carpeta que su archivo .csproj o .sln. Pegue el fragmento de código XML proporcionado en el archivo. El fragmento de código debe ser similar al siguiente:

    • Feed con ámbito de organización:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • Fuente con ámbito de proyecto:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Inicie sesión en el servidor de Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione la fuente.

  3. Seleccione Conectar a la fuente y, a continuación, seleccione NuGet.exe en el panel de navegación izquierdo.

  4. Agregue un nuget.config archivo al proyecto, en la misma carpeta que el .csproj archivo o .sln y, a continuación, pegue el fragmento de código XML proporcionado en el archivo.

Publicar en un canal de la misma organización

Después de configurar nuget.config y autenticarse con el proveedor de credenciales de Azure Artifacts, ejecute el siguiente comando para publicar un paquete en la fuente. Reemplace los marcadores de posición por los valores devueltos adecuados:

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Ejemplo:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

Nota

El proveedor de credenciales de Azure Artifacts se encarga de la autenticación real para el push, pero NuGet sigue requiriendo un valor -ApiKey para aceptar el comando. Azure Artifacts omite el valor que proporcione, por lo que cualquier cadena no vacía funciona.

Publicar en un canal de otra organización

Si la fuente de destino está en una organización de Azure DevOps diferente, cree un PAT en esa organización y agregue la fuente como origen en el nuget.config archivo.

  1. Cree un token de acceso personal (PAT) en la organización de destino con el ámbito delectura y escriturade empaquetado>.

  2. Ejecute el siguiente comando para agregar la fuente como origen. Este comando añade tu PAT a nuget.config, así que guarda el archivo de forma segura y no lo subas al control de código fuente.

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Publique el paquete con el nombre de origen que acaba de agregar.

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Ejemplo:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

Nota

Si su organización usa un firewall o un servidor proxy, permita las direcciones URL de dominio y las direcciones IP de Azure Artifacts.

Troubleshooting

No aparece el mensaje de autenticación

Asegúrese de que el proveedor de credenciales de Azure Artifacts está instalado y usa la versión 4.8.0.5385 de NuGet o posterior. Para conocer los pasos de configuración, consulte Conexión a fuentes de Azure Artifacts con NuGet.exe.

Se produce un error en la publicación porque la versión ya existe

Las versiones del paquete de Azure Artifacts son inmutables. Después de publicar una versión, no puede sobrescribirla ni reutilizar el mismo número de versión, incluso si elimina el paquete. Actualice la versión del paquete, recompile el paquete y vuelva a publicarlo.

La publicación falla detrás de un cortafuegos o proxy

Permita las direcciones URL de dominio y las direcciones IP de Azure Artifacts y vuelva a intentar la operación de publicación.

La publicación falla con un error 403

Este error suele indicar que tu cuenta no tiene permisos de publicación en el canal. Necesitas al menos el rol de Publicador de fuentes (Colaborador) para publicar paquetes. Pida a un propietario del feed que actualice su rol y vuelva a intentarlo.