web-dev-qa-db-ja.com

Nuget PACKAGEフォルダーをバージョン管理に含める必要がありますか?

私が知りたいのですが

C#またはVB.NETプロジェクトでは、PACKAGEフォルダー(プロジェクトのルートに作成され、nupkgファイルとその他のコンテンツを含むナゲットパッケージフォルダー)をソース管理リポジトリ(Gitなど)に含める必要があります。

72

多くの時間が経過し、NuGetが変更されたため、ここで新しい答えを示します。

NuGetは、ソース構造内にパッケージフォルダーを作成しなくなりました。代わりに、ユーザーディレクトリ(%HOME%\.nuget\packages具体的には)ダウンロードするすべてのパッケージを置き、プロジェクトはこれらを参照するだけです。

したがって、最近の単純な答えは「いいえ」です。そうすべきではありません。消去が必要なパッケージが心配な場合は、個別にバックアップするローカルNuGetミラーを作成する必要があります。

29
Sebastian Redl

場合によります。

Bart van Ingen Schenauの回答 を確認して、packagesフォルダーをまったく無視できるかどうかを判断してください。

基本的に:はい、NuGetはpackagesフォルダーを無視できるように設計されており、不足している場合はNuGetがインターネットからすべてを取得します。

しかし、あなたはそれを無視すべきですか?私は言う:それは依存します。
IMO「パッケージリポジトリが利用できない場合でも作業を続行できますか」(一時的または永続的に)の質問です

私の個人的なOSSプロジェクトでは、packagesフォルダーをすべて無視しています。
nuget.orgがオフラインのときは、もう1日待って続行します。

しかし、それは仕事では別のものです。
確かに、まだ一部のマシンにローカルにパッケージがありますが、ビルドサーバーがnuget.orgにアクセスできないためにビルドが壊れたときに、面倒なスペースを節約していますか?

スペースが安く、面倒なことはしたくないと判断しました。そのため、packagesフォルダーをソース管理にコミットしています。

53

ソース管理リポジトリに入るものの基本的なルールは、プロジェクトに関連するすべてのものをそこに格納し、プロジェクトをビルド、テスト、デプロイ、および実行できるようにする必要があり、リポジトリにすでに存在するアイテムから生成できないことです。 。

つまり、能力に影響を与えずにPACKAGEフォルダーとその内容を破棄できる場合は、プロジェクトでの作業を続行できます(ビルドに時間がかかる可能性がありますが、自分で何かを探してインストールする必要はありません)。リポジトリから安全に除外されます。
ダウンロードに時間がかかる、または使用できなくなる可能性があるサードパーティパッケージがフォルダーに含まれている場合は、とにかくそれらをリポジトリに追加する理由となる可能性があります。