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 フォルダーを開くことができます。

image

image

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] から行うことができます。

image

こうすることで、Manage NuGet Packages ダイアログや Package Manager Console から参照することができるようになります。

image

image

 

ただし、この Package Cache には一度もインストールしていないパッケージは保存されていない ということに注意が必要です。つまり、デモなどの場合のオフラインへの対応として、この Package Cache の使用を最初から期待してしまうことは危険だということです。

もし、オフラインでの NuGet 使用を想定したバックアップとして考えるのであれば、あらかじめ必要なパッケージ (.nupkg) を Package Cache フォルダーなどから別のフォルダーにコピーしておき、Package Sources としてローカルフォルダーを登録しておくと安心でしょう。

私も、下記のような形でローカル環境に自分用のパッケージフォルダを作っています。先日の Windows Developer Days のセッションでも、もしものバックアップとして用意しておきました。

image

この Package Source にはフォルダー パスを登録できるとともに、IIS 上に独自に NuGet サーバーを用意することもできます(上記スクリーンショットの “My Package Server” のように)。

参考: Hosting Your Own NuGet Feeds

◆◆◆

先日、社内で NuGet の勉強会を行ったときのスライドを SlideShare にアップしておきましたので、よろしければご参考にしてください。社内勉強会の資料ですが、特に公開できない内容は含まれてませんので、そのまま公開しております。

NuGet でゲット! Visual Studio パッケージ マネージャ―概要

View more presentations from chack411