NuGet をオフラインで使用する
先日開催した Windows Developer Days のビデオ公開に向けて、先ほど自分のセッションビデオをチェックしていました。自分で自分が話しているビデオ(今回はスクリーン表示と声のみで顔は映ってません)を見るのは結構辛いのですが、そこは心を鬼にして頑張ってみてみました。こうしたら良かったとか、いろいろと勉強になることが多いですね・・・w
さて、そんなセッションの中でも、最近は NuGet を使用することが多くなっています。この NuGet でインターネット上の公式パッケージをインストールする場合、もちろんオンライン(インターネット接続)が必要ですが、さまざまな状況・場所で NuGet を使用したりデモしたりする場合、オフラインの場合も考慮しておかなければなりません。
こういった NuGet のオフラインでの使用を想定した事前準備として Package Cache の利用をご紹介します。
★ NuGet Package Cache
NuGet パッケージマネージャーを通して一度でもインストールしたパッケージは、Package Cache フォルダーにキャッシュされています。
この Package Cache フォルダーは、Visual Studio の [ツール] – [オプション] からオプションダイアログを開き、[Package Manager] – [General] の [Browse] ボタンから Cache フォルダーを開くことができます。
Package Cache の場所: C:\Users\<User Name>\AppData\Local\NuGet\Cache
通常、NuGet 公式パッケージは、直接 NuGet ギャラリー からダウンロードすることはできませんが、このキャッシュを通して .nupkg 形式で取得することができます。
急にオフラインになってしまった、などの場合に、この Package Cache フォルダーを Package Sources として登録することで NuGet パッケージマネージャーで使用することができます。
Package Sources への登録は、Visual Studio の [ツール] – [オプション] からオプションダイアログを開き、[Package Manager] – [Package Sources] から行うことができます。
こうすることで、Manage NuGet Packages ダイアログや Package Manager Console から参照することができるようになります。
ただし、この Package Cache には一度もインストールしていないパッケージは保存されていない ということに注意が必要です。つまり、デモなどの場合のオフラインへの対応として、この Package Cache の使用を最初から期待してしまうことは危険だということです。
もし、オフラインでの NuGet 使用を想定したバックアップとして考えるのであれば、あらかじめ必要なパッケージ (.nupkg) を Package Cache フォルダーなどから別のフォルダーにコピーしておき、Package Sources としてローカルフォルダーを登録しておくと安心でしょう。
私も、下記のような形でローカル環境に自分用のパッケージフォルダを作っています。先日の Windows Developer Days のセッションでも、もしものバックアップとして用意しておきました。
この Package Source にはフォルダー パスを登録できるとともに、IIS 上に独自に NuGet サーバーを用意することもできます(上記スクリーンショットの “My Package Server” のように)。
参考: Hosting Your Own NuGet Feeds
◆◆◆
先日、社内で NuGet の勉強会を行ったときのスライドを SlideShare にアップしておきましたので、よろしければご参考にしてください。社内勉強会の資料ですが、特に公開できない内容は含まれてませんので、そのまま公開しております。
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
View more presentations from chack411