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


68

私が知りたいのですが

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


これらのファイルはコードの一部であり、プロジェクトはそれらなしではビルドされないため、絶対にYesです。
シャーキー

ずっと前にSOで同様の質問をしました。答えを探すこともできます:stackoverflow.com/questions/1710027/… :)
cwap

Mavenの世界で「バージョン管理にサードパーティのライブラリを含めるべきか」と尋ねる人はいないのだろうか。あまり説得力はありませんが、ライブラリをコミットしないことに対する確固たる反論を見つけてください。
ホアンロング

回答:


28

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

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

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


6
私はVS2015にいます(VS2017はこの答えを書くわずか3日前にリリースされたと考えてください)、そしてパッケージフォルダは私のソリューションルートにあります。NuGetがどのように、いつ変更されたかについて興味があります。
ティージェイ

NuGetはバージョン3で変更され、VS2015の期間中に帯域外でリリースされました。
セバスチャンレッド

職場のコンピューターで確認したところ、パッケージはあなたが言及した場所です。しかし、私の自宅のコンピューターでは、プロジェクトディレクトリにあります。両方ともVS2015(プロフェッショナル@仕事、コミュニティ@ホーム)にあり、ホームの1つはごく最近のインストールです...それは奇妙です。
ティージェイ

12
先週VS 2017をインストールし、昨日新しいプロジェクトを作成しました。私のプロジェクトにはパッケージディレクトリがあります。
ジェレミー

2
CIのために何をしますか?すべてのnugetパッケージを何度もダウンロードしますか?(TBH:私自身、私の意見が非常に不明確です)
Tomer W

50

場合によります。

チェックアウトバートバン隠元Schenauの答えを、それを無視することは可能ですかどうかを判断するためpackagesに、すべてのフォルダを。

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

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

私の個人的なOSSプロジェクトでpackagesは、すべてのフォルダーでフォルダーが無視されます。
nuget.orgがオフラインになったら、私はただ待って別の日を続けます。

しかし、それは職場では異なるものです。
確かに、おそらくいくつかのマシンにローカルにパッケージが残っていますが、ビルドサーバーがnuget.orgに到達できないため、ビルドが中断しているときに面倒に値するスペースを節約していますか?

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


1
nuget.orgはどのくらいの頻度で利用できませんか?
バルトス

4
おそらくそれほど頻繁ではありません。しかし、「オフライン」ではなく「到達不能」と言うべきだったかもしれません。数年前、掘削機が誤って建物へのインターネットケーブルを切断したという事件がありました。修理に1日以上かかりました。nuget.orgに依存していた場合、プロジェクトを構築できませんでした。(はい、最近はNuGetがパッケージをローカルにキャッシュしていますが、当時はそうではありませんでした)
Christian Specht

パッケージフォルダーをチェックインしないと、パッケージの復元中にビルド時間のほとんどをパッケージの取得に費やすため、ビルド時間がはるかに長くなります。
AaronLS

29

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

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


20
サードパーティのプロジェクトが削除されたり、それをホストしているサイトがなくなったりした場合に備えて、プロジェクトで使用されているサードパーティのコードのバージョンを安全に保存する必要があることを追加します。 。また、必要に応じて、そのコードの以前のバージョンにロールバックする機会を提供します。
ベント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.