2

私のアプリには、nuget パッケージ参照がほとんどありません。パッケージフォルダーもソース管理にチェックインする必要がありますか? 私の意図は、ソース コードを他の開発者が利用できるようにし、参照の安定したバージョンについていくことです。プロジェクトを最新のナゲット更新で更新し、アプリが壊れた場合、特定のバージョンの depedable dll をソース管理から特定の日付で取得したいと考えています。

または、ライブラリフォルダーを作成し、パッケージフォルダーから dll をドロップして、以前行っていたものを確認する必要がありますか? そして、ローカルのみのパッケージフォルダーを管理しますか?

4

2 に答える 2

3

NuGet パッケージをソース管理に含めるかどうかの長所と短所を比較検討し、自分で決定する必要があります。選択は完全にあなた次第です。

プロジェクトを最新のナゲット更新で更新し、アプリが壊れた場合、特定のバージョンの信頼できる dll をソース管理から特定の日付で取得したいと考えています。

これは、どちらのアプローチでもサポートされています。NuGet パッケージをチェックインしない場合は、各プロジェクトの packages.config ファイルをチェックインする必要があります。このファイルには、使用された NuGet パッケージのバージョンが記録されます。古いバージョンのソース コードをチェックアウトすると、古いバージョンの NuGet パッケージが使用されます。nuget.org の NuGet パッケージは削除されません。

NuGet サイトには、ここで引用したソース管理からパッケージを省略したくない理由に関するドキュメントがあります。

分散バージョン管理システム (DCVS) には、リポジトリ内のすべてのファイルのすべてのバージョンが含まれており、頻繁に更新されるバイナリ ファイルは、リポジトリの大幅な肥大化と、リポジトリのクローン作成に必要な時間の増加につながる可能性があります。パッケージがリポジトリに含まれていると、チーム メンバーは、NuGet を介してパッケージを参照するのではなく、ディスク上のパッケージ コンテンツへの参照を直接追加できます。まだ使用されているパッケージ フォルダーを削除しないようにする必要があるため、未使用のパッケージ フォルダーをソリューションから "クリーン" にすることは難しくなります。

NuGet パッケージをソース管理にチェックインしないという問題は、ビルド サーバーまたはネットワーク接続が制限されている場合に発生する可能性があります。ビルド サーバーでは、インターネットにアクセスするか、プロジェクトで使用されている NuGet パッケージを含むローカル ディレクトリを提供する必要があります。また、プロジェクトをビルドする前に実行NuGet.exe restoreするか、MSBuild ベースのパッケージの復元 (NuGet チームによって廃止されました) を使用する必要があります。Visual Studio で最新バージョンの NuGet を使用している場合、プロジェクトをビルドすると、NuGet パッケージが自動的に復元されることに注意してください。他の IDE には、コマンド ラインから NuGet.exe を使用せずにパッケージを復元する同様の機能または少なくとも方法があります。

NuGet パッケージをソース管理に含める利点は、NuGet に依存しないことです。他の開発者は、NuGet パッケージを復元することなく、ソース コードを取得して作業することができます。

dll をライブラリ フォルダーに移動すると、NuGet のメリットが十分に得られないことに注意してください。NuGet は、dll がパッケージ ディレクトリにあることを想定しています。すべての参照はこのディレクトリ内の dll に対するものであるため、dll をライブラリ フォルダーに移動すると、NuGet を使用してプロジェクトを更新できなくなります。

考慮すべきアプローチは次のとおりです。

  1. packages ディレクトリをソース管理にチェックインします。
  2. パッケージ ディレクトリをソース管理にチェックインして、NuGet によるパッケージの復元に依存しないでください。
  3. NuGet は一切使用しないでください。ソース管理にチェックインされる別のディレクトリにバイナリを配置します。
于 2014-08-24T11:14:29.250 に答える