NuGet タスク

バージョン 2。

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

注意

認証NuGetタスクは、新しい推奨される新しい方法で、Azure Artifactsその他のNuGetです。 このタスクは新しい機能を使用しなくなったので、重要なバグにのみ対処されます。

このタスクを使用して、パッケージの依存関係NuGetをインストールして更新するか、パッケージをインストールしてパッケージを発行NuGetします。 アプリNuGet.exe使用し、アプリを.NET Frameworkします。 .NET Core と .NET Standardアプリの場合は、.NET Core タスクを使用します。

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。

コードが新しいパッケージにNuGet場合は、ビルド ステップ の前にこのVisual Studio追加してください。 また、その手順の [パッケージの復元] NuGet オフ にしてください。

.NET Core または .NET Standard を使用している場合は 、.NET Core タスクを使用します。このタスクは、すべてのパッケージ シナリオを完全にサポートし、現在 dotnet でサポートされています。

ヒント

このバージョンの NuGet では、NuGet 4.1.0 が使用されます。 別のバージョンのファイルを選択するにはNuGetツール インストーラー を使用します

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

引数

引数 説明
command
コマンド
実行NuGetコマンド。 [カスタム] を選択して引数を追加するか、別のコマンドを使用します。
オプション: restore pack custom 、、、 push
restoreSolution
ソリューション、ソリューション、packages.config、またはproject.jsパス
復元するパッケージを参照するpackages.config、project.jsへのパス。
feedsToUse
使用するフィード
Azure Artifacts または NuGet.org からフィードを選択するか、nuget.config ファイルをソース コード リポジトリにコミットして、ここでそのパスを設定できます。
オプション: select config 、。
vstsFeed
このアプリケーション/TFS フィードAzure Artifactsパッケージを使用する
選択したフィードを、生成されたフィードに含NuGet.config。ここでフィードを選択Azure Artifacts、インストールとライセンスが必要です。
includeNuGetOrg
NuGet.org のパッケージを使用する
生成NuGetに NuGet.org を含NuGet.config。既定値は です true
の場合は必須 feedsToUse == Select です。
nugetConfigPath
パスから NuGet.config
パッケージNuGet.configを復元するフィードを指定するリポジトリ内に存在します。
必要な場合 feedsToUse == Config
externalFeedCredentials
この組織/コレクション外のフィードの資格情報
選択したレジストリにある外部レジストリに使用するNuGet.config。これは、サービス接続のNuGetです。 この組織/コレクション内のフィードの場合は、空白のままにします。ビルドの資格情報が自動的に使用されます。
noCache
ローカル キャッシュを無効にする
ローカル NuGetからのパッケージの使用を防止します。
disableParallelProcessing
並列処理を無効にする
複数のNuGetの並列インストールを回避します。
restoreDirectory
[作成先ディレクトリ]
パッケージがインストールされるフォルダーを指定します。 フォルダーが指定されていない場合、パッケージは、選択したソリューション、パッケージ、またはフォルダーと共に packages/ フォルダーpackages.config復元project.jsされます。
verbosityRestore
詳細度
出力に表示される詳細の量を指定します。
オプション: Quiet Normal 、、 Detailed
nuGetFeedType
ターゲット フィードの場所
ターゲット フィードが内部フィード/コレクションまたは外部フィード サーバーのNuGetします。
オプション: internal external 、。
必要な場合 command == Push
publishVstsFeed
ターゲット フィード
このアカウントでホストされているフィードを選択します。 ここでフィードを選択Azure Artifacts、インストールとライセンスが必要です。
packagesToPush
パッケージの場所
nupkg ファイルに一致するパターンまたはパス。
例: '$(Build.ArtifactStagingDirectory)/*.nupkg'。
必要な場合 command == Push
publishPackageMetadata
パイプライン メタデータを発行する
一連のパッケージを継続的に発行し、変更したパッケージのサブセットのバージョン番号のみを変更する場合は、このオプションを使用します。
allowPackageConflicts これにより、一部のパッケージが 409 競合エラーで拒否された場合でも、タスクは成功を報告できます。
競合NuGet.exe発生した場合、タスクは失敗します。 このオプションは機能しません。プロキシ環境内にある場合、発行は失敗します。
publishFeedCredentials
NuGet サーバー
外部NuGetサーバーの資格情報を含NuGetサービス接続。
verbosityPush
詳細度
出力に表示される詳細の量を指定します。
オプション: Quiet Normal 、、 Detailed
packagesToPack
パックする csproj または nuspec ファイルへのパス
パックする csproj ディレクトリを検索するパターン。
複数のパターンをセミコロンで区切り、先頭に ! を付け、パターンを負の値に できます
例: **\\*.csproj;!**\\*.Tests.csproj
configuration
パッケージ化する構成
csproj ファイルを使用する場合、パッケージ化する構成を指定します。
packDestination
パッケージ フォルダー
パッケージが作成されるフォルダー。 空の場合は、ソース ルートにパッケージが作成されます。
versioningScheme
パッケージの自動バージョン管理
参照先のプロジェクトを含める場合は使用できません。 を選択 Use the date and time すると、X、Y、Z を選択する場所として書式設定された SemVer 準拠バージョン X.Y.Z-ci-datetime が生成されます。
を選択した Use an environment variable 場合は、環境変数を選択し、使用するバージョン番号が含まれている必要があります。
を選択すると Use the build number 、ビルド番号を使用してパッケージのバージョンが作成されます。
注: ビルド番号の形式は、次のように name プロパティを使用 して設定できます。
name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)。
オプション: off byPrereleaseNumber byEnvVar 、、、 byBuildNumber
includeReferencedProjects
環境変数
$、$env、または %. を指定せずに変数名を入力します。
majorVersion
Major
バージョン X.Y.Z の "X"
minorVersion
マイナー
バージョン X.Y.Z の 'Y'
patchVersion
修正プログラム
バージョン X.Y.Z の "Z"
packTimezone
タイム ゾーン
パッケージのバージョンを生成するために使用する目的のタイム ゾーンを指定します。 ホストされているビルド エージェントの日付と時刻が異なる可能性がある場合は、UTC を選択する方法をお勧めします。
オプション: utclocal
includeSymbols
シンボル パッケージを作成する
パッケージにソースとシンボルが含まれる場合に指定します。 .nuspec ファイルと一緒に使用すると、通常のパッケージ NuGetおよび対応するシンボル パッケージが作成されます。
toolPackage
ツール パッケージ
プロジェクトの出力ファイルをツール フォルダーに格納する必要があるかどうかを判断します。
buildProperties
その他のビルド プロパティ
token=value ペアのリストをセミコロンで区切って指定します。ここで、.nuspec ファイル内で $token$ が出現する場合は、それぞれ指定された値に置き換えることができます。 値には、引用符で囲まれた文字列を指定できます。
basePath
基本パス
nuspec ファイルで定義されているファイルの基本パス。
verbosityPack
詳細度
出力に表示される詳細の量を指定します。
オプション: Quiet Normal 、、 Detailed
arguments
コマンドと引数
実行するために渡されるコマンドと引数NuGet.exe渡されます。 NuGet 3.5 以降が使用されている場合は、Project Collection Build Service がアクセスできるこの組織/コレクション内の任意のフィードに対して、リスト、復元、発行など、認証されたコマンドが自動的に認証されます。

バージョン管理スキーム

byPrereleaseNumber の場合、バージョンはメジャー、マイナー、パッチに対して選択したに設定され、 形式の日付と時刻が設定されます yyyymmdd-hhmmss

byEnvVar の 場合 、versionEnvVar パラメーターで指定された名前を持つ環境変数の値にバージョンが設定されます (例: MyVersion (いいえ、環境変数名だけ $ )。 環境変数が適切な SemVer (例: や ) に設定されている必要 1.2.3 があります 1.2.3-beta1

byBuildNumber の場合、パイプライン実行のビルド番号を使用してバージョンが設定されます。 これは、環境変数に保存されるパイプラインの プロパティに指定 name された BUILD_BUILDNUMBER 値です。 使用されているビルド番号に適切な SemVer (例: ) が含まれている必要があります 1.0.$(Rev:r)byBuildNumber を使用する 場合、タスクはビルド番号文字列からドット付きバージョンを抽出し、 1.2.3.4 その部分のみを使用します。 文字列の残りの部分は削除されます。 ビルド番号をこのとおりに使用する場合は、前述のように byEnvVar を使用し 、versionEnvVar を に設定します BUILD_BUILDNUMBER

復元

選択したフィードからパッケージを使用して、すべてのソリューションを復元します。

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

パッケージ

コピー先フォルダー NuGetパッケージを作成します。

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

プッシュ

注意

パイプライン成果物はディレクトリにダウンロード System.ArtifactsDirectory されます。 packagesToPush value は、リリース $(System.ArtifactsDirectory)/**/*.nupkg パイプラインで に設定できます。

  • パッケージに定義されているフィードにパッケージをプッシュ/発行NuGet.config。

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
        feedsToUse: 'config'
        nugetConfigPath: '$(Build.WorkingDirectory)/NuGet.config'
    
  • スコープが指定されたプロジェクトにパッケージをプッシュ/発行する

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        feedsToUse: 'select'
        vstsFeed: 'my-project/my-project-scoped-feed'
        publishVstsFeed: 'myTestFeed'
    
  • パッケージを NuGet.org にプッシュ/発行する

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

Custom

既定のコマンド以外NuGet他のコマンド (パック、プッシュ、復元) を実行します。

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

オープンソース

を使用Azure Pipelines、Team Foundation Serverのタスクを確認GitHub。 フィードバックと投稿をお待ちしております。

よく寄せられる質問

アプリケーションをチェックインする必要NuGet.Config?

ソース管理NuGet.Configを確認することで、プロジェクトのビルドに必要な重要な情報 (パッケージの場所) を、コードをチェックアウトする開発者が利用できます。

ただし、開発者のチームがさまざまなプロジェクトに取り組む場合は、各開発者のコンピューター上のグローバル NuGet.Config に Azure Artifacts フィードを追加できます。 このような状況では、この構成をレプリケートするタスクの [ここに選択NuGetフィード] オプションを使用します。

データの詳細についてはAzure Artifacts。

Azure Artifacts のドキュメント

データ の詳細については、どこでNuGet。

NuGet Docs概要

NuGet作成パッケージ化と公開

NuGet使用依存関係を取得するソリューションの設定

他にどのような種類のアプリをビルドできますか?

アプリの例をビルドしてデプロイする

他にどのような種類のビルド タスクを使用できますか?

ビルドタスクとリリース タスク カタログ

ビルドの区切りからコードベースを保護する方法

操作方法パイプラインの他の部分を変更しますか?

並列マルチ構成を選択しましたが、一度に実行されているビルドは 1 つのみです。

アプリケーションを使用している場合Azure Pipelines、より多くの並列ジョブが必要になる場合があります。 「並列ジョブ」を参照Azure Pipelines。

操作方法パイプラインで何が変更されたのかを参照してください。

ビルド パイプラインの変更履歴を表示する

エージェントは必要ですか?

ビルドまたはリリースを実行するには、エージェントが少なくとも 1 つ必要です。

問題が発生しています。 どのように対処すればよいですか?

ビルドとリリースのトラブルシューティングに関するページを参照してください。

既定のエージェント プールが選択できず、ビルドまたはリリースをキューに入れることができません。 これをどのように修正すればよいですか?

エージェント プール」を参照してください。

NuGet プッシュ タスクが次のエラーで失敗します: "Error: unable to get local issuer certificate" (エラー: ローカル発行者の証明書を取得できません)。 どうしたらいいですか。

これは、信頼されたルート証明書を追加することで修正できます。 ビルド エージェントに NODE_EXTRA_CA_CERTS=file 環境変数を追加するか、パイプラインに NODE.EXTRA.CA.CERTS=file タスク変数を追加することができます。 詳細については、環境変数に関するページを参照してください。

TFS をオンプレミスで使用していますが、これらの機能の一部が表示されません。 なぜでしょうか。

これらの機能の一部は Azure Pipelines でのみ使用でき、オンプレミスではまだ使用できません。 TFS の最新バージョンにアップグレードした場合は、一部の機能をオンプレミスで使用できます。

パイプラインで別のプロジェクトのフィードにアクセスする必要がある

パイプラインがフィードをホストするプロジェクトとは異なるプロジェクトで実行されている場合は、ビルド サービスへの読み取り/書き込みアクセス権を付与する他のプロジェクトを設定する必要があります。 詳細については、Azure Pipelines のパッケージのアクセス許可に関するページを参照してください。