7
5

More than 1 year has passed since last update.

[VisualStudio] ソリューションの中にnugetしたライブラリを入れるpackageフォルダが作られる/作られない、の設定

Last updated at Posted at 2021-03-22

もくじ

やりたいこと

VisualStudioのソリューションによって、nugetで参照に追加したライブラリのパッケージが保存されるはずのpackageフォルダが、出来ているときと出来ていない時がある。
(出来てなくてもライブラリは使えてる)

image.png

別にどこにpackageが出来てようとライブラリが動けばよいのだが、稀に、ソリューションのフォルダにpackageフォルダがあって、その中にライブラリ類が配置されるのを前提にバッチファイルが組まれてたりするケースがあったので、そういうときに慌てないようにしておきたい。

packageフォルダがソリューションのフォルダに出来てない時は、どうやってnugetで採ったライブラリを使ってるのか?(どこにpackageが置かれてるのか?)調べたい。

調べた結果

VisualStudioで、プロジェクトを右クリック > [Nugetパッケージの管理]を押し、
image.png

ここの歯車ボタンを押すと、
image.png

NuGetパッケージマネージャーの設定が開く。
image.png

そこの「全般」の中の「規定のパッケージ管理形式」について、
image.png

ここの設定を

  • Packages.configにすると、

    • .slnファイルと同じ階層に「packages」フォルダができて、そこにnugetしたライブラリが保存される。
    • globalなフォルダにも保存される。
  • PackageReferenceにすると、

    • ソリューションのフォルダの中に「packages」フォルダはできない。
    • 代わりに、globalなパッケージフォルダ(具体的にはC:\Users\ユーザー名\.nuget\packages)に保存される。

公式ページより

こちらに、詳細が書いてある。

Packages.configを使用する場合、パッケージはglobal-packagesフォルダーにインストールされてから、プロジェクトのフォルダーにコピーされます、とのこと。
image.png

つまり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

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5