もくじ
やりたいこと
VisualStudioのソリューションによって、nugetで参照に追加したライブラリのパッケージが保存されるはずのpackage
フォルダが、出来ているときと出来ていない時がある。
(出来てなくてもライブラリは使えてる)
別にどこにpackageが出来てようとライブラリが動けばよいのだが、稀に、ソリューションのフォルダにpackageフォルダがあって、その中にライブラリ類が配置されるのを前提にバッチファイルが組まれてたりするケースがあったので、そういうときに慌てないようにしておきたい。
→package
フォルダがソリューションのフォルダに出来てない時は、どうやってnugetで採ったライブラリを使ってるのか?(どこにpackageが置かれてるのか?)調べたい。
調べた結果
VisualStudioで、プロジェクトを右クリック > [Nugetパッケージの管理]を押し、
ここの設定を
-
Packages.configにすると、
- .slnファイルと同じ階層に「packages」フォルダができて、そこにnugetしたライブラリが保存される。
- globalなフォルダにも保存される。
-
PackageReferenceにすると、
- ソリューションのフォルダの中に「packages」フォルダはできない。
- 代わりに、globalなパッケージフォルダ(具体的には
C:\Users\ユーザー名\.nuget\packages
)に保存される。
公式ページより
こちらに、詳細が書いてある。
Packages.configを使用する場合、パッケージはglobal-packagesフォルダーにインストールされてから、プロジェクトのフォルダーにコピーされます、とのこと。
つまりpackage.configだと、globalにも保存されるし、slnと同じところのpackagesフォルダにも保存される。packagereferenceだと、globalだけになるっぽい。
どこに何が保存される、とかもおなじ資料に書いてある。
→Windowsでは、%userprofile%\.nuget\packages
がglobalなpackageのフォルダになる。
なにげにはまりそうな点
この設定をかえたとき、いったんVisualStudioを終了して起動しなおさないと、上記のpackageフォルダができる/できないが変わってくれない(設定変更についてきてくれない)っぽい。(VS2019時点)
参照
■packages.config から PackageReference への移行
https://docs.microsoft.com/ja-jp/nuget/consume-packages/migrate-packages-config-to-package-reference
これによると、どうも「Packages.config」は古い形式で、今後(VS2017以降)では「PackageReference」に移行するのがおすすめっぽい。
■グローバルパッケージ、キャッシュ、および一時フォルダーの管理
https://docs.microsoft.com/ja-jp/nuget/consume-packages/managing-the-global-packages-and-cache-folders