NuGetCommand@2 - NuGet v2 task

Use this task to restore, pack, or push NuGet packages, or run a NuGet command. This task supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. This task also uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.

Syntax

# NuGet v2
# 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' # 'restore' | 'pack' | 'push' | 'custom'. Required. Command. Default: restore.
    restoreSolution: '**/*.sln' # string. Alias: solution. Required when command = restore. Path to solution, packages.config, or project.json. Default: **/*.sln.
    #packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # string. Alias: searchPatternPush. Required when command = push. Path to NuGet package(s) to publish. Default: $(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg.
    #nuGetFeedType: 'internal' # 'internal' | 'external'. Required when command = push. Target feed location. Default: internal.
    #publishVstsFeed: # string. Alias: feedPublish. Required when command = push && nuGetFeedType = internal. Target feed. 
    #allowPackageConflicts: false # boolean. Optional. Use when command = push && nuGetFeedType = internal. Allow duplicates to be skipped. Default: false.
    #publishFeedCredentials: # string. Alias: externalEndpoint. Required when command = push && nuGetFeedType = external. NuGet server. 
    #packagesToPack: '**/*.csproj' # string. Alias: searchPatternPack. Required when command = pack. Path to csproj or nuspec file(s) to pack. Default: **/*.csproj.
    #configuration: '$(BuildConfiguration)' # string. Alias: configurationToPack. Optional. Use when command = pack. Configuration to package. Default: $(BuildConfiguration).
    #packDestination: '$(Build.ArtifactStagingDirectory)' # string. Alias: outputDir. Optional. Use when command = pack. Package folder. Default: $(Build.ArtifactStagingDirectory).
    #arguments: # string. Required when command = custom. Command and arguments. 
  # Feeds and authentication
    feedsToUse: 'select' # 'select' | 'config'. Alias: selectOrConfig. Required. Feeds to use. Default: select.
    #vstsFeed: # string. Alias: feedRestore. Optional. Use when selectOrConfig = select. Use packages from this Azure Artifacts/TFS feed. 
    #includeNuGetOrg: true # boolean. Optional. Use when selectOrConfig = select. Use packages from NuGet.org. Default: true.
    #nugetConfigPath: # string. Optional. Use when selectOrConfig = config. Path to NuGet.config. 
    #externalFeedCredentials: # string. Alias: externalEndpoints. Optional. Use when selectOrConfig = config. Credentials for feeds outside this organization/collection. 
  # Advanced
    #noCache: false # boolean. Disable local cache. Default: false.
    #disableParallelProcessing: false # boolean. Disable parallel processing. Default: false.
    #restoreDirectory: # string. Alias: packagesDirectory. Destination directory. 
    #verbosityRestore: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
  # Advanced
    #publishPackageMetadata: true # boolean. Optional. Use when command = push && nuGetFeedType = internal. Publish pipeline metadata. Default: true.
    #verbosityPush: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
  # Pack options
    versioningScheme: 'off' # 'off' | 'byPrereleaseNumber' | 'byEnvVar' | 'byBuildNumber'. Required. Automatic package versioning. Default: off.
    #includeReferencedProjects: false # boolean. Optional. Use when versioningScheme = off. Include referenced projects. Default: false.
    #versionEnvVar: # string. Required when versioningScheme = byEnvVar. Environment variable. 
    #majorVersion: '1' # string. Alias: requestedMajorVersion. Required when versioningScheme = byPrereleaseNumber. Major. Default: 1.
    #minorVersion: '0' # string. Alias: requestedMinorVersion. Required when versioningScheme = byPrereleaseNumber. Minor. Default: 0.
    #patchVersion: '0' # string. Alias: requestedPatchVersion. Required when versioningScheme = byPrereleaseNumber. Patch. Default: 0.
    #packTimezone: 'utc' # 'utc' | 'local'. Optional. Use when versioningScheme = byPrereleaseNumber. Time zone. Default: utc.
    #includeSymbols: false # boolean. Create symbols package. Default: false.
    #toolPackage: false # boolean. Tool Package. Default: false.
  # Advanced
    #buildProperties: # string. Additional build properties. 
    #basePath: # string. Base path. 
    #verbosityPack: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
# NuGet v2
# Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Package Management 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' # 'restore' | 'pack' | 'push' | 'custom'. Required. Command. Default: restore.
    restoreSolution: '**/*.sln' # string. Alias: solution. Required when command = restore. Path to solution, packages.config, or project.json. Default: **/*.sln.
    #packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # string. Alias: searchPatternPush. Required when command = push. Path to NuGet package(s) to publish. Default: $(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg.
    #nuGetFeedType: 'internal' # 'internal' | 'external'. Required when command = push. Target feed location. Default: internal.
    #publishVstsFeed: # string. Alias: feedPublish. Required when command = push && nuGetFeedType = internal. Target feed. 
    #allowPackageConflicts: false # boolean. Optional. Use when command = push && nuGetFeedType = internal. Allow duplicates to be skipped. Default: false.
    #publishFeedCredentials: # string. Alias: externalEndpoint. Required when command = push && nuGetFeedType = external. NuGet server. 
    #packagesToPack: '**/*.csproj' # string. Alias: searchPatternPack. Required when command = pack. Path to csproj or nuspec file(s) to pack. Default: **/*.csproj.
    #configuration: '$(BuildConfiguration)' # string. Alias: configurationToPack. Optional. Use when command = pack. Configuration to package. Default: $(BuildConfiguration).
    #packDestination: '$(Build.ArtifactStagingDirectory)' # string. Alias: outputDir. Optional. Use when command = pack. Package folder. Default: $(Build.ArtifactStagingDirectory).
    #arguments: # string. Required when command = custom. Command and arguments. 
  # Feeds and authentication
    feedsToUse: 'select' # 'select' | 'config'. Alias: selectOrConfig. Required. Feeds to use. Default: select.
    #vstsFeed: # string. Alias: feedRestore. Optional. Use when selectOrConfig = select. Use packages from this Azure Artifacts/TFS feed. 
    #includeNuGetOrg: true # boolean. Optional. Use when selectOrConfig = select. Use packages from NuGet.org. Default: true.
    #nugetConfigPath: # string. Optional. Use when selectOrConfig = config. Path to NuGet.config. 
    #externalFeedCredentials: # string. Alias: externalEndpoints. Optional. Use when selectOrConfig = config. Credentials for feeds outside this account/collection. 
  # Advanced
    #noCache: false # boolean. Disable local cache. Default: false.
    #disableParallelProcessing: false # boolean. Disable parallel processing. Default: false.
    #restoreDirectory: # string. Alias: packagesDirectory. Destination directory. 
    #verbosityRestore: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
  # Advanced
    #verbosityPush: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
  # Pack options
    versioningScheme: 'off' # 'off' | 'byPrereleaseNumber' | 'byEnvVar' | 'byBuildNumber'. Required. Automatic package versioning. Default: off.
    #includeReferencedProjects: false # boolean. Optional. Use when versioningScheme = off. Include referenced projects. Default: false.
    #versionEnvVar: # string. Required when versioningScheme = byEnvVar. Environment variable. 
    #majorVersion: '1' # string. Alias: requestedMajorVersion. Required when versioningScheme = byPrereleaseNumber. Major. Default: 1.
    #minorVersion: '0' # string. Alias: requestedMinorVersion. Required when versioningScheme = byPrereleaseNumber. Minor. Default: 0.
    #patchVersion: '0' # string. Alias: requestedPatchVersion. Required when versioningScheme = byPrereleaseNumber. Patch. Default: 0.
    #packTimezone: 'utc' # 'utc' | 'local'. Optional. Use when versioningScheme = byPrereleaseNumber. Time zone. Default: utc.
    #includeSymbols: false # boolean. Create symbols package. Default: false.
    #toolPackage: false # boolean. Tool Package. Default: false.
  # Advanced
    #buildProperties: # string. Additional build properties. 
    #basePath: # string. Base path. 
    #verbosityPack: 'Detailed' # 'Quiet' | 'Normal' | 'Detailed'. Verbosity. Default: Detailed.
# YAML Syntax is not supported in TFS 2018.
# Use the classic designer to add and configure tasks.
# See the following Inputs section for details on the inputs that this task supports.

Inputs

command - Command
string. Required. Allowed values: restore, pack, push, custom. Default value: restore.

Specifies the NuGet command to run. Use the custom value to add arguments or to use a different command.


restoreSolution - Path to solution, packages.config, or project.json
Input alias: solution. string. Required when command = restore. Default value: **/*.sln.

Specifies the path to the solution, packages.config, or project.json file that references the packages to be restored.


feedsToUse - Feeds to use
Input alias: selectOrConfig. string. Required. Allowed values: select (Feed(s) I select here), config (Feeds in my NuGet.config). Default value: select.

Specifies a feed from Azure Artifacts and/or NuGet.org for the task to use with the select value. Alternatively, you can commit a NuGet.config file to your source code repository and set its path as the value using the config value.


vstsFeed - Use packages from this Azure Artifacts/TFS feed
Input alias: feedRestore. string. Optional. Use when selectOrConfig = select.

Specifies the selected feed in the generated NuGet.config. You must have Package Management installed and licensed to specify a feed here.


vstsFeed - Use packages from this VSTS/TFS feed
Input alias: feedRestore. string. Optional. Use when selectOrConfig = select.

Specifies the selected feed in the generated NuGet.config. You must have Package Management installed and licensed to specify a feed here.


includeNuGetOrg - Use packages from NuGet.org
boolean. Optional. Use when selectOrConfig = select. Default value: true.

Includes NuGet.org in the generated NuGet.config.


nugetConfigPath - Path to NuGet.config
string. Optional. Use when selectOrConfig = config.

Specifies the path to the NuGet.config in your repository that determines the feeds from which to restore packages.


externalFeedCredentials - Credentials for feeds outside this organization/collection
Input alias: externalEndpoints. string. Optional. Use when selectOrConfig = config.

Specifies the credentials to use for external registries located in the selected NuGet.config. This is the name of your NuGet service connection. For feeds in this organization or collection, leave this blank; the build's credentials are used automatically.


externalFeedCredentials - Credentials for feeds outside this account/collection
Input alias: externalEndpoints. string. Optional. Use when selectOrConfig = config.

Specifies the credentials to use for external registries located in the selected NuGet.config. This is the name of your NuGet service connection. For feeds in this account or collection, leave this blank; the build's credentials are used automatically.


noCache - Disable local cache
boolean. Default value: false.

Prevents NuGet from using packages from local machine caches when set to true.


disableParallelProcessing - Disable parallel processing
boolean. Default value: false.

Prevents NuGet from installing multiple packages in parallel processes when set to true.


restoreDirectory - Destination directory
Input alias: packagesDirectory. string.

Specifies the folder in which packages are installed. If no folder is specified, packages are restored into a packages/ folder alongside the selected solution, packages.config, or project.json.


verbosityRestore - Verbosity
string. Allowed values: Quiet, Normal, Detailed. Default value: Detailed.

Specifies the amount of detail displayed in the output.


packagesToPush - Path to NuGet package(s) to publish
Input alias: searchPatternPush. string. Required when command = push. Default value: $(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg.

Specifies the pattern to match or path to nupkg files to be uploaded. Multiple patterns can be separated by a semicolon.


nuGetFeedType - Target feed location
string. Required when command = push. Allowed values: internal (This organization/collection), external (External NuGet server (including other accounts/collections)). Default value: internal.

Specifies whether the target feed is an internal feed/collection or an external NuGet server.


nuGetFeedType - Target feed location
string. Required when command = push. Allowed values: internal (This account/collection), external (External NuGet server (including other accounts/collections)). Default value: internal.

Specifies whether the target feed is an internal feed/collection or an external NuGet server.


publishVstsFeed - Target feed
Input alias: feedPublish. string. Required when command = push && nuGetFeedType = internal.

Specifies a feed hosted in this account. You must have Azure Artifacts installed and licensed to select a feed here.


publishPackageMetadata - Publish pipeline metadata
boolean. Optional. Use when command = push && nuGetFeedType = internal. Default value: true.

Changes the version number of the subset of changed packages within a set of continually published packages.


allowPackageConflicts - Allow duplicates to be skipped
boolean. Optional. Use when command = push && nuGetFeedType = internal. Default value: false.

Reports task success even if some of your packages are rejected with 409 Conflict errors.

This option is currently only available on Azure Pipelines and Windows agents. If NuGet.exe encounters a conflict, the task will fail. This option will not work and publishing will fail if you are within a proxy environment.


publishFeedCredentials - NuGet server
Input alias: externalEndpoint. string. Required when command = push && nuGetFeedType = external.

Specifies the NuGet service connection that contains the external NuGet server’s credentials.


verbosityPush - Verbosity
string. Allowed values: Quiet, Normal, Detailed. Default value: Detailed.

Specifies the amount of detail displayed in the output.


packagesToPack - Path to csproj or nuspec file(s) to pack
Input alias: searchPatternPack. string. Required when command = pack. Default value: **/*.csproj.

Specifies the pattern that the task uses to search for csproj directories to pack.

You can separate multiple patterns with a semicolon, and you can make a pattern negative by prefixing it with !. Example: **\*.csproj;!**\*.Tests.csproj.


configuration - Configuration to package
Input alias: configurationToPack. string. Optional. Use when command = pack. Default value: $(BuildConfiguration).

Specifies the configuration to package when using a csproj file.


packDestination - Package folder
Input alias: outputDir. string. Optional. Use when command = pack. Default value: $(Build.ArtifactStagingDirectory).

Specifies the folder where the task creates packages. If the value is empty, the task creates packages at the source root.


versioningScheme - Automatic package versioning
string. Required. Allowed values: off, byPrereleaseNumber (Use the date and time), byEnvVar (Use an environment variable), byBuildNumber (Use the build number). Default value: off.

Applies automatic package versioning depending on the specified value. This string cannot be used with includeReferencedProjects. The allowed values are:

  • byPrereleaseNumber - Use the date and time: The task will generate a SemVer-compliant version formatted as X.Y.Z-ci-datetime, where you specify the values of X, Y, and Z.
  • byEnvVar- Use an environment variable: The task will use an environment variable that you specify and contains the version number you want to use.
  • true - Use the build number: The task will use the build number to version the package.

Note

Under General, set the build format to be $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r).


includeReferencedProjects - Include referenced projects
boolean. Optional. Use when versioningScheme = off. Default value: false.

Includes referenced projects either as dependencies or as part of the package. Cannot be used with automatic package versioning. If a referenced project has a corresponding nuspec file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. Learn more about using the pack command for NuGet CLI to create NuGet packages.


versionEnvVar - Environment variable
string. Required when versioningScheme = byEnvVar.

Specifies the variable name without $, $env, or %.


majorVersion - Major
Input alias: requestedMajorVersion. string. Required when versioningScheme = byPrereleaseNumber. Default value: 1.

The X in version X.Y.Z.


minorVersion - Minor
Input alias: requestedMinorVersion. string. Required when versioningScheme = byPrereleaseNumber. Default value: 0.

The Y in version X.Y.Z.


patchVersion - Patch
Input alias: requestedPatchVersion. string. Required when versioningScheme = byPrereleaseNumber. Default value: 0.

The Z in version X.Y.Z.


packTimezone - Time zone
string. Optional. Use when versioningScheme = byPrereleaseNumber. Allowed values: utc, local (Agent local time). Default value: utc.

Specifies the desired time zone used to produce the version of the package. Selecting utc is recommended if you're using hosted build agents, as their date and time might differ.


includeSymbols - Create symbols package
boolean. Default value: false.

Specifies that the package contains sources and symbols. When used with a .nuspec file, this creates a regular NuGet package file and the corresponding symbols package.


toolPackage - Tool Package
boolean. Default value: false.

Determines if the output files of the project should be in the tool folder.


buildProperties - Additional build properties
string.

Specifies a list of token=value pairs, separated by semicolons, where each occurrence of $token$ in the .nuspec file will be replaced with the given value. Values can be strings in quotation marks.


basePath - Base path
string.

Specifies the base path of the files defined in the nuspec file.


verbosityPack - Verbosity
string. Allowed values: Quiet, Normal, Detailed. Default value: Detailed.

Specifies the amount of detail displayed in the output.


arguments - Command and arguments
string. Required when command = custom.

Specifies the command and arguments that will be passed to NuGet.exe for execution. If NuGet 3.5 or later is used, authenticated commands like list, restore, and publish against any feed in this organization or collection that the Project Collection Build Service has access to will be automatically authenticated.


Task control options

All tasks have control options in addition to their task inputs. For more information, see Control options and common task properties.

Output variables

None.

Remarks

Important

The NuGet Authenticate task is the new recommended way to authenticate with Azure Artifacts and other NuGet repositories. This task no longer takes new features, and only critical bugs are addressed.

Use this task to install and update NuGet package dependencies, or package and publish NuGet packages. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.

If your code depends on NuGet packages, make sure to add this step before your Visual Studio Build task. Also make sure to clear the deprecated Restore NuGet Packages checkbox in that task.

If you are working with .NET Core or .NET Standard, use the .NET Core task, which has full support for all package scenarios and is currently supported by dotnet.

Tip

This version of the NuGet task uses NuGet 4.1.0 by default. To select a different version of NuGet, use the Tool Installer.

Versioning schemes

For byPrereleaseNumber, the version will be set to the values you choose for the major version, the minor version, and the patch, plus the date and time, in the format yyyymmdd-hhmmss.

For byEnvVar, the version will be set to the value of the environment variable that has the name specified by the versionEnvVar parameter, e.g. MyVersion (no $, just the environment variable name). Make sure the environment variable is set to a proper SemVer, such as 1.2.3 or 1.2.3-beta1.

For byBuildNumber, the version will be set using the pipeline run's build number. This is the value specified for the pipeline's name property, which gets saved to the BUILD_BUILDNUMBER environment variable). Ensure that the build number being used contains a proper SemVer, such as 1.0.$(Rev:r). When using byBuildNumber, the task will extract the dotted version, 1.2.3.4, from the build number string, and use only that portion. The rest of the string will be dropped. If you want to use the build number as is, you can use byEnvVar as described above, and set versionEnvVar to BUILD_BUILDNUMBER.

Examples

Restore

Restore all your solutions with packages from a selected feed.

# 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'

Package

Create a NuGet package in the destination folder.

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

Push

Note

Pipeline artifacts are downloaded to the Pipeline.Workspace directory, and to the System.ArtifactsDirectory directory for classic release pipelines. packagesToPush value can be set to $(Pipeline.Workspace)/**/*.nupkg or $(System.ArtifactsDirectory)/**/*.nupkg respectively.

  • Push/Publish a package to a feed defined in your NuGet.config.

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
        feedsToUse: 'config'
        nugetConfigPath: '$(Build.WorkingDirectory)/NuGet.config'
    
  • Push/Publish a package to an organization scoped feed

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        nuGetFeedType: 'internal'
        publishVstsFeed: 'my-organization-scoped-feed'
    
  • Push/Publish a package to a project scoped feed

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        nuGetFeedType: 'internal'
        publishVstsFeed: 'my-project/my-project-scoped-feed'
    
  • Push/Publish a package to NuGet.org

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

Custom

Run any other NuGet command besides the default ones: pack, push, and restore.

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

Requirements

Requirement Description
Pipeline types YAML, Classic build, Classic release
Runs on Agent, DeploymentGroup
Demands None
Capabilities This task does not satisfy any demands for subsequent tasks in the job.
Command restrictions Any
Settable variables Any
Agent version 2.144.0 or greater
Task category Package
Requirement Description
Pipeline types YAML, Classic build, Classic release
Runs on Agent, DeploymentGroup
Demands None
Capabilities This task does not satisfy any demands for subsequent tasks in the job.
Command restrictions Any
Settable variables Any
Agent version 2.115.0 or greater
Task category Package