localのnugetパッケージを設定する


visual studio を使っていて、ビルド済のlibを使ってもらいたい、けど公式にアップしたくないできないという場合に、ローカルのパッケージソースを指定できる。
vs2015で確認。

普通のローカルパッケージソース設定の方法

[ツール]→[オプション]からオプションダイアログ表示
一覧から[NuGetパッケージマネージャー]を選択、英語(nuget package manager)かもしれない。

- 名前
識別用の名前。
- ソース
ローカルの .nupkg ファイルがあるディレクトリ。

ここで設定したファイルは、イカの場所にある。
%APPDATA%NuGet\NuGet.Config

ソリューション毎に指定する

この辺りからイレギュラーな方法。

1. slnを作成する。
2. slnがあるフォルダに[.nuget]フォルダを作成する。
(例のごとく、"."から始まる名前はエクスプローラでは作れないので、cmd辺りで適当にmkdirする)


3. そこに、"%APPDATA%NuGet\NuGet.Config" のnuget.config ファイルをコピーする。
4. コピーした ".nuget\NuGetConfig" ファイルを編集。
タグのタグの中にパッケージソースを追加します。
1つのvalueに1つのソースが追加できます。
value にはローカルのフォルダが指定できます。
相対パスを指定すると、".nuget\"フォルダからの相対になるようです。

5. slnファイルを開く
5. 1. ソリューションに[.nuget]という名前でソリューションフォルダを追加する。
5. 2. そこに、先ほどコピーした".nuget\NuGetConfig"ファイルを追加する。
5. 3. sln を保存して、vsを開きなおす。
(念のため)

6. slnを開きなおし、Nugetパッケージ管理を開くと、パッケージソースに先ほど編集した Nuget.Config ファイルの内容が反映されている。
この状態で[ツール]→[オプション]のオプションダイアログからパッケージソースを編集すると、".nuget\NuGetConfig" ファイルが編集されるようです。ただし、相対パスはどうオプションダイアログで入力を試みたら、有効なパスを指定してくださいと怒られたので、ファイルを直接編集必須かも。

相対パスに設定してから、 git にローカルnugetのnupkgを強制追加すれば、PC移動して開発も楽。Nugetパッケージの復元で、ここで指定したローカルのパッケージソースが参照されるようになります。

感想文

イレギュラーな設定をしている感満載だったので、みんなで共有できる場所に配置するのが正攻法なんだろうなと思います。

以前のバージョンのvisual studioでnuget.configファイルが存在、restore 機能が搭載されたころに、このファイルが不要になったというアナウンスがあった気がする。この書き方はその古い書き方を再利用して、nuget.configの設定を上書きしているんだろうなぁ。という想像です。古い機能ということは将来のvisual studioでなくなるかもしれないので少し怖いです。

packages フォルダ以下を丸ごとgitに強制追加する方法もあるのだけれど、同フォルダの中身を見れば分る通り、*.nupkgファイルとその展開ファイルが存在していて、重複しているのが気に入らなかった。