VisualStudio2017以降のプロジェクトをMSBuildでNuGetパッケージ復元する
ソフトウェア開発担当のRyuです。
久しぶりにJenkinsを構築していて、表題のことを調査したので書きます。
- ここからBuild Tools for Visual Studioをダウンロードしてインストールする。
- VisualStudioの[ツール]>[オプション]>[NuGetパッケージマネージャー]>[全般]で、[規定のパッケージ管理形式]を[PackageReference]に変更する。
- package.configを利用する古い形式のプロジェクトなら、package.configを右クリックして[package.configをPackageReferenceに移行する]を選択する。
- 必要なら環境変数に、NuGetのキャッシュフォルダを[NUGET_PACKAGES=C:\NugetPackageCache]のような形で指定する。(デフォルトだと%userprofile%と指定されているので、C:\Windows\system32以下になってしまうことがあるらしい。参考)
- msbuild -t:restoreを実行する。
手順は以上です。
別途NuGetCLIを用意する必要はありません。
package.configのまま利用することもできるみたいですけど、色々設定が必要になるそうです。
ここに到達するまでに長い道のりがありました。
NuGetCLIを拾いに行って、今はBuild Toolsに含まれているよと誘導されダウンロード&インストール後に、NuGetが何処にインストールされたのかを必死に探し回り、結局見つからずにMSのドキュメントを読みMSBuildに統合されたことを知り、restoreを実行したら失敗し、package.configを使うためにいろいろ設定が必要だということに行き当たり、こんな面倒なことが本当に必要なのかと、再びMSのドキュメントを読み漁るはめになり、今度こそと挑んだらまたエラーでStackOverflowに助けてもらいました。
検索だけに頼っていると古い情報も多く引っかかってくるので、読みづらくても公式のドキュメントに一度は目を通しておいたほうがいいと思い知りました。