ASP.NET でソース管理システムへの NuGet パッケージのコミットを不要とする

ASP.NET プロジェクトと NuGet パッケージ マネージャーは、今では切っても切れない関係で、プロジェクトを構成するライブラリ群の多くが NuGet 経由でプロジェクトに追加され管理されるようになっています。

NuGet については、下記もご参照ください。

@IT:特集:.NET開発の新標準「NuGet」入門
https://www.atmarkit.co.jp/fdotnet/chushin/nuget_01/nuget_01_01.html

NuGet でゲット! Visual Studio パッケージ マネージャ―概要
https://www.slideshare.net/chack411/nuget-visual-studio

image

図:とあるプロジェクトの packages フォルダーにダウンロードされている NuGet パッケージ群

image

図:この pacages フォルダーだけで 27.5MB になっています...

これらの ASP.NET プロジェクトを TFS や Git などのソースコード バージョン管理システムなどで管理する場合、これまでは NuGet で管理されるパッケージのバイナリファイルもコミットする必要がありました。しかし、これはソース管理システムのリポジトリの肥大化を招くため、あまり望ましいことではないため、NuGet 2.0 以降からは NuGet パッケージのリストア機能に対応し、ソース管理システムへの NuGet パッケージのバイナリファイルのコミットを不要として、ビルド時に不足している NuGet パッケージがあった場合に自動でダウンロードしてリストアすることが可能になっています。

この NuGet パッケージのリストア機能を使用するには、まず、Visual Studio 2012 の [ツール] – [オプション] – [パッケージ マネージャー] の [全般] にある「パッケージの復元」設定を有効にします。

image 

そして、各プロジェクトの [ソリューション エクスプローラー] のソリューション名上で右クリックして表示されるメニューから「NuGet パッケージの復元の有効化」を選択し、表示されるダイアログで「はい」をクリックします。

image

image

これで、.nuget フォルダーがソリューション ルートに追加されて、以後、ビルド時に足りない NuGet パッケージがあった場合に自動でそれらのパッケージをダウンロードするようにソリューションが構成されます。

image

この設定を行っておくと、ソリューションに packages フォルダーがなく、またプロジェクトの bin フォルダーがクリーンな状態でも、ビルド時に必要な NuGet パッケージがダウンロードされるようになります。

image

図:ビルド時に必要な NuGet パッケージがダウンロード・インストールされている状態

 

ASP.NET プロジェクトを TFS や NuGet で管理される場合は、合わせてこの機能も使用されることをお勧めします。

この NuGet パッケージの復元の有効化については下記のドキュメントもご参照ください。

Using NuGet without committing packages to source control
https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages