NuGet tarea

Versión 2.

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Nota

La NuGet authenticate es la nueva manera recomendada de autenticarse con Azure Artifacts y otros repositorios NuGet usuario. Esta tarea ya no toma nuevas características y solo se abordan los errores críticos.

Use esta tarea para instalar y actualizar NuGet de paquetes o empaquetar y publicar NuGet paquetes. Usa NuGet.exe y funciona con .NET Framework aplicaciones. En el caso de .NET Core .NET Standard aplicaciones, use la tarea .NET Core.

Nota

En Microsoft Team Foundation Server (TFS) 2018 y versiones anteriores, las canalizaciones de compilación y versión se denominan definiciones, las ejecuciones se denominan compilaciones, las conexiones de servicio se denominan puntos de conexión de servicio, las fases se denominan entornos y los trabajos se denominan fases.

Si el código depende de NuGet paquetes, asegúrese de agregar este paso antes de Visual Studio de compilación. Asegúrese también de borrar la casilla Restaurar NuGet paquetes en desuso en ese paso.

Si está trabajando con .NET Core o .NET Standard, use la tarea .NET Core, que es totalmente compatible con todos los escenarios de paquetes y actualmente es compatible con dotnet.

Sugerencia

Esta versión de la tarea NuGet usa NuGet 4.1.0 de forma predeterminada. Para seleccionar otra versión de NuGet, use el Instalador de herramientas.

Fragmento de código YAML

# NuGet
# Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.
- task: NuGetCommand@2
  inputs:
    #command: 'restore' # Options: restore, pack, push, custom
    #restoreSolution: '**/*.sln' # Required when command == Restore
    #feedsToUse: 'select' # Options: select, config
    #vstsFeed: # Required when feedsToUse == Select
    #includeNuGetOrg: true # Required when feedsToUse == Select
    #nugetConfigPath: # Required when feedsToUse == Config
    #externalFeedCredentials: # Optional
    #noCache: false 
    #disableParallelProcessing: false 
    restoreDirectory: 
    #verbosityRestore: 'Detailed' # Options: quiet, normal, detailed
    #packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # Required when command == Push
    #nuGetFeedType: 'internal' # Required when command == Push# Options: internal, external
    #publishVstsFeed: # Required when command == Push && NuGetFeedType == Internal
    #publishPackageMetadata: true # Optional
    #allowPackageConflicts: # Optional
    #publishFeedCredentials: # Required when command == Push && NuGetFeedType == External
    #verbosityPush: 'Detailed' # Options: quiet, normal, detailed
    #packagesToPack: '**/*.csproj' # Required when command == Pack
    #configuration: '$(BuildConfiguration)' # Optional
    #packDestination: '$(Build.ArtifactStagingDirectory)' # Optional
    #versioningScheme: 'off' # Options: off, byPrereleaseNumber, byEnvVar, byBuildNumber
    #includeReferencedProjects: false # Optional
    #versionEnvVar: # Required when versioningScheme == ByEnvVar
    #majorVersion: '1' # Required when versioningScheme == ByPrereleaseNumber
    #minorVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #patchVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #packTimezone: 'utc' # Required when versioningScheme == ByPrereleaseNumber# Options: utc, local
    #includeSymbols: false # Optional
    #toolPackage: # Optional
    #buildProperties: # Optional
    #basePath: # Optional, specify path to nuspec files
    #verbosityPack: 'Detailed' # Options: quiet, normal, detailed
    #arguments: # Required when command == Custom

Argumentos

Argumento Descripción
command
Comando
Comando NuGet ejecutar. Seleccione "Personalizado" para agregar argumentos o para usar un comando diferente.
Opciones: restore , pack , custom , push
restoreSolution
Ruta de acceso a la solución, packages.config o project.json
Ruta de acceso a la solución, packages.config o archivo project.json que hace referencia a los paquetes que se restaurarán.
feedsToUse
Fuentes que se usarán
Puede seleccionar una fuente de Azure Artifacts o NuGet.org, o bien confirmar un archivo nuget.config en el repositorio de código fuente y establecer su ruta de acceso aquí.
Opciones: select , config .
vstsFeed
Uso de paquetes de esta Azure Artifacts/TFS
Incluya la fuente seleccionada en la fuente NuGet.config. Debe tener una Azure Artifacts instalada y con licencia para seleccionar una fuente aquí.
includeNuGetOrg
Uso de paquetes de NuGet.org
Incluya NuGet.org en el archivo NuGet.config. El valor predeterminado es true .
Se requiere cuando feedsToUse == Select .
nugetConfigPath
Ruta de acceso a NuGet.config
El NuGet.config en el repositorio que especifica las fuentes desde las que se restaurarán los paquetes.
Obligatorio cuando feedsToUse == Config
externalFeedCredentials
Credenciales para fuentes fuera de esta organización o colección
Credenciales que se usarán para los registros externos ubicados en el NuGet.config. Este es el nombre de la conexión NuGet servicio. En el caso de las fuentes de esta organización o colección, déjelo en blanco; Las credenciales de la compilación se usan automáticamente.
noCache
Deshabilitación de la caché local
Impide NuGet usar paquetes de cachés de máquinas locales.
disableParallelProcessing
Deshabilitación del procesamiento paralelo
Impide NuGet instalar varios paquetes en paralelo.
restoreDirectory
Directorio de destino
Especifica la carpeta en la que se instalan los paquetes. Si no se especifica ninguna carpeta, los paquetes se restauran en una carpeta packages/junto con la solución seleccionada, packages.config o project.json.
verbosityRestore
Nivel de detalle
Especifica la cantidad de detalles que se muestra en la salida.
Opciones: Quiet , Normal , Detailed
nuGetFeedType
Ubicación de la fuente de destino
Especifica si la fuente de destino es una fuente o colección interna o un servidor NuGet externo.
Opciones: internal , external .
Obligatorio cuando command == Push
publishVstsFeed
Fuente de destino
Seleccione una fuente hospedada en esta cuenta. Debe tener una Azure Artifacts instalada y con licencia para seleccionar una fuente aquí.
packagesToPush
Ubicación de los paquetes
Patrón que se va a coincidir con los archivos nupkg o la ruta de acceso.
Ejemplo: "$(Build.ArtifactStagingDirectory)/*.nupkg".
Obligatorio cuando command == Push
publishPackageMetadata
Publicación de metadatos de canalización
Si publica continuamente un conjunto de paquetes y solo cambia el número de versión del subconjunto de paquetes que han cambiado, use esta opción.
allowPackageConflicts Permite que la tarea informe del éxito incluso si algunos de los paquetes se rechazan con errores de conflicto 409.
Si NuGet.exe encuentra un conflicto, se producirá un error en la tarea. Esta opción no funcionará y la publicación producirá un error si se encuentra dentro de un entorno de proxy.
publishFeedCredentials
NuGet servidor
La NuGet de servicio que contiene las credenciales NuGet servidor externo.
verbosityPush
Nivel de detalle
Especifica la cantidad de detalles que se muestra en la salida.
Opciones: Quiet , Normal , Detailed
packagesToPack
Ruta de acceso a los archivos csproj o nuspec que se va a empaquetar
Patrón para buscar directorios csproj que se empaquetan.
Puede separar varios patrones con un punto y coma y puede hacer que un patrón sea negativo si lo antefila con !.
Ejemplo: **\\*.csproj;!**\\*.Tests.csproj
configuration
Configuración para empaquetar
Cuando se usa un archivo csproj, se especifica la configuración que se va a empaquetar.
packDestination
Carpeta del paquete
Carpeta donde se crearán los paquetes. Si está vacío, los paquetes se crearán en la raíz de origen.
versioningScheme
Control automático de versiones de paquetes
No se puede usar con proyectos a los que se hace referencia. Si elige , se generará una versión compatible con SemVer con el formato donde Use the date and time elija Use the date and timeX.Y.Z-ci-datetime X, Y y Z.
Si elige , debe seleccionar una variable de entorno y asegurarse de Use an environment variable que contiene el número de versión que desea usar.
Si elige Use the build number , usará el número de compilación para crear una versión del paquete.
Nota: Puede establecer el formato de número de compilación mediante la propiedad name de la siguiente manera:
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr).
Opciones: off , byPrereleaseNumber , byEnvVar , byBuildNumber
includeReferencedProjects
Variable de entorno
Escriba el nombre de la variable sin $, $env o %.
majorVersion
Major
La "X" en la versión X.Y.Z
minorVersion
Secundaria
La "Y" en la versión X.Y.Z
patchVersion
Revisión
La "Z" en la versión X.Y.Z
packTimezone
Zona horaria
Especifica la zona horaria deseada que se usa para generar la versión del paquete. Se recomienda seleccionar UTC si usa agentes de compilación hospedados, ya que su fecha y hora pueden diferir.
Opciones: utc , local
includeSymbols
Creación de un paquete de símbolos
Especifica que el paquete contiene orígenes y símbolos. Cuando se usa con un archivo .nuspec, se crea un archivo de paquete NuGet y el paquete de símbolos correspondiente.
toolPackage
Paquete de herramientas
Determina si los archivos de salida del proyecto deben estar en la carpeta de herramientas.
buildProperties
Propiedades de compilación adicionales
Especifica una lista de pares token=value, separados por punto y coma, donde cada aparición de $token$ en el archivo .nuspec se reemplazará por el valor especificado. Los valores pueden ser cadenas entre comillas.
basePath
Ruta de acceso base
Ruta de acceso base de los archivos definidos en el archivo nuspec.
verbosityPack
Nivel de detalle
Especifica la cantidad de detalles que se muestra en la salida.
Opciones: Quiet , Normal , Detailed
arguments
Comandos y argumentos
El comando y los argumentos que se pasarán a NuGet.exe para su ejecución. Si NuGet se usa la versión 3.5 o posterior, los comandos autenticados como list, restore y publish en cualquier fuente de esta organización o recopilación a la que el servicio de compilación de recopilación de Project tenga acceso se autenticarán automáticamente.

Esquemas de control de versiones

Para byPrereleaseNumber, la versión se establecerá en lo que elija para principal, secundaria y revisión, además de la fecha y hora en el formato .

Para byEnvVar, la versión se establecerá en el valor de la variable de entorno que tiene el nombre especificado por el parámetro versionEnvVar, por ejemplo, (no , solo el nombre de la variable de entorno). Asegúrese de que la variable de entorno está establecida en un SemVer adecuado, por ejemplo, 1.2.3 o 1.2.3-beta1 .

Para byBuildNumber, la versión se establecerá mediante el número de compilación de la ejecución de canalización. Este es el valor especificado para la propiedad de la name canalización, que se guarda en la BUILD_BUILDNUMBER variable de entorno . Asegúrese de que el número de compilación que se usa contiene un SemVer adecuado, por ejemplo, 1.0.$(Rev:r) . Cuando se usa byBuildNumber, la tarea extraerá la versión de puntos de la cadena de número de compilación y usará solo esa parte. Se descartará el resto de la cadena. Si desea usar el número de compilación tal como está, puede usar byEnvVar como se ha descrito anteriormente y establecer versionEnvVar en .

Ejemplos

Restauración

Restaure todas las soluciones con paquetes de una fuente seleccionada.

# Restore from a project scoped feed in the same organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-project/my-project-scoped-feed'
    includeNuGetOrg: false
    restoreSolution: '**/*.sln'
# Restore from an organization scoped feed in the same organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-organization-scoped-feed'
    restoreSolution: '**/*.sln'
# Restore from a feed in a different organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: config
    nugetConfigPath: ./nuget.config
    restoreSolution: '**/*.sln'
    externalFeedCredentials: 'MyServiceConnectionName'
    noCache: true
  continueOnError: true
# Restore from feed(s) set in nuget.config
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'config'
    nugetConfigPath: 'nuget.config'

Paquete

Cree un NuGet en la carpeta de destino.

# Package a project
- task: NuGetCommand@2
  inputs:
    command: 'pack'
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'

Insertar

Nota

Los artefactos de canalización se descargan en el System.ArtifactsDirectory directorio. packagesToPush el valor se puede establecer en $(System.ArtifactsDirectory)/**/*.nupkg en la canalización de versión.

  • Insertar o publicar un paquete en una fuente definida en la NuGet.config.

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
        feedsToUse: 'config'
        nugetConfigPath: '$(Build.WorkingDirectory)/NuGet.config'
    
  • Inserción o publicación de un paquete en un proyecto con ámbito

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        feedsToUse: 'select'
        vstsFeed: 'my-project/my-project-scoped-feed'
        publishVstsFeed: 'myTestFeed'
    
  • Inserción o publicación de un paquete en NuGet.org

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        feedsToUse: 'config'
        includeNugetOrg: 'true'
    

Personalizado

Ejecute cualquier otro NuGet comando que no sea el predeterminado: empaquetar, insertar y restaurar.

# list local NuGet resources.
- task: NuGetCommand@2
  displayName: 'list locals'
  inputs:
    command: custom
    arguments: 'locals all -list'

De código abierto

Consulte las tareas Azure Pipelines y Team Foundation Server de forma lista para su uso en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

¿Por qué debo comprobar una NuGet.Config?

La comprobación de NuGet.Config en el control de código fuente garantiza que un fragmento de información clave necesario para compilar el proyecto, la ubicación de sus paquetes, está disponible para todos los desarrolladores que comprueban el código.

Sin embargo, en situaciones en las que un equipo de desarrolladores trabaja en una gran variedad de proyectos, también es posible agregar una fuente de Azure Artifacts a la NuGet.Config global en la máquina de cada desarrollador. En estas situaciones, el uso de la opción "Fuentes que selecciono aquí" en la tarea NuGet replica esta configuración.

¿Dónde puedo obtener información sobre Azure Artifacts?

Documentación de Azure Artifacts

¿Dónde puedo obtener más información sobre NuGet?

NuGet de docs

NuGet crear empaquetado y publicación

NuGet usar Configuración de una solución para obtener dependencias

¿Qué otros tipos de aplicaciones puedo compilar?

Compilación e implementación de ejemplos de aplicaciones

¿Qué otros tipos de tareas de compilación están disponibles?

Catálogo de tareas de compilación y versión

¿Cómo se protege el código base de los saltos de compilación?

Cómo modificar otras partes de la canalización de compilación?

He seleccionado varias configuraciones paralelas, pero solo se ejecuta una compilación a la vez.

Si usa Azure Pipelines, es posible que necesite más trabajos paralelos. Vea Trabajos paralelos en Azure Pipelines.

Cómo ver qué ha cambiado en mi canalización de compilación?

Visualización del historial de cambios de la canalización de compilación

¿Necesito un agente?

Necesita al menos un agente para ejecutar la compilación o versión.

Tengo problemas. ¿Cómo puedo solucionarlos?

Vea Solución de problemas de compilación y versión.

No se puede seleccionar un grupo de agentes predeterminado y no se puede poner en cola la compilación o versión. ¿Cómo puedo corregirlo?

Vea Grupos de agentes.

La tarea de envío de cambios de NuGet genera el error siguiente: "Error: no se puede obtener el certificado del emisor local". ¿Cómo lo puedo corregir?

Esto se puede corregir si se añade un certificado raíz de confianza. Puede agregar la variable de entorno NODE_EXTRA_CA_CERTS=file al agente de compilación, o bien la variable de tarea NODE.EXTRA.CA.CERTS=file en la canalización. Vea la documentación de Node.js para obtener más detalles sobre esta variable. Consulte Establecimiento de variables en una canalización para obtener instrucciones sobre cómo establecer una variable en la canalización.

Utilizo TFS en el entorno local y no veo algunas de estas características. ¿Por qué no?

Algunas de estas características solo están disponibles en Azure Pipelines y todavía no lo están en el entorno local. Algunas características están disponibles en el entorno local si ha actualizado a la versión más reciente de TFS.

Mi canalización necesita acceder a una fuente en un proyecto diferente

Si la canalización se ejecuta en un proyecto diferente al proyecto que hospeda la fuente, debe configurar el otro proyecto para conceder acceso de lectura y escritura al servicio de compilación. Consulte Permisos de paquete en Azure Pipelines para obtener más detalles.