2012-10-21 9 views
6

NuGetのようなパッケージマネージャは、サードパーティのコンポーネントを使用したいときに役立つことを知っています。Nugetのようなパッケージマネージャが必要なのはなぜですか?

Nuget CodePlexにページから

NuGetは、中に.NETアプリケーションにサードパーティのライブラリを組み込む のプロセスを簡素化する上で.NETプラットフォームの意図のための無料のオープンソース開発者重視のパッケージ管理 システムであり、 開発。

が.NETプラットフォーム用 うちに有用サードパーティのオープンソースのライブラリが多数ありますが、OSS 生態系に慣れていない人のため、プロジェクトにこれらのライブラリを引っ張って痛みをすることができます。

ELMAHを例にしましょう。他のライブラリとの依存関係がなく、依然としてプロジェクトに統合するための挑戦である という素晴らしいエラーログユーティリティです。以下は、実行する手順です。

Find ELMAH 
Download the correct zip package. 
“Unblock” the package. 
Verify its hash against the one provided by the hosting environment. 
Unzip the package contents into a specific location in the solution. 
Add an assembly reference to the assembly. 
Update web.config with the correct settings which a developer needs to search for. 

これは依存関係のないライブラリです。それぞれ の類似の手順を必要とする複数の依存関係を持つNHibernate.Linqについては、これを とします。私たちはずっと良いことができます!

NuGetは、パッケージのこれらの一般的で面倒なタスクをすべて と同様に依存関係として自動化します。ほぼすべてのプロジェクトの ソースツリーにサードパーティのオープンソースライブラリを組み込む の課題の

これらのステップは、我々はセットアップにプロジェクトをしたいとき、私たちは単純なタスクは、それが削除されています。サードパーティのコンポーネントを追加する自動化のためだけであり、設定ファイルにエラーが発生する可能性がありますか?それともそれ以上の責任がありますか?

+0

あなたは何を求めているのか分かりませんが、何か他のことを期待していましたか? – Betty

+0

Nugetのようなものが解決したいという問題は大きな問題ではないと思います!場合によっては、チームワークに複雑なレイヤを追加します。特に、ジュニアプログラマを扱うときには複雑です。 – Navid

+0

あなたはそれがすべてのことをするので必要です..? – Patrick

答えて

17

オープンには値が隠されています。マネージャなど、NuGetは自動化を使用してソフトウェアの依存関係を処理するのに役立ちます。多くの人は、オープンソースやサードパーティーのコンポーネントのためだけであることを前提にしていますが、それと同じように、独自の内部パッケージにも使用できます。

NuGetの素晴らしいところは、(いくつかの利点に名前を付ける)です:あなたは暗黙的に代わりにソースを分岐の実際の「リリース」(偶数プレリリースの場合)、に依存しているため

  • NuGetは、コンポーネントの再利用を奨励
  • あなたはVCSリポジトリを膨らませるバイナリを取り除くことができます(パッケージ復元機能)
  • パッケージ作成者は、パッケージの使用方法を考えて、パッケージのインストール時にコンポーネントの設定を処理しますパッケージ作成者よりもパッケージを構成するにはどうすればよいでしょうか?)。 ELMAHを例に考えてみましょう。
  • パッケージリポジトリへのパッケージの作成と公開を効率的に行うことは、継続的な配信の形態です(ソフトウェアコンポーネントの場合)。 OctopusDeployはこれをさらに進化させ、展開の準備が整ったWebサイト全体をパッケージ化することも可能にします。
  • NuGetはALMのベストプラクティスに従うことを奨励し、時には強制します。例えば。パッケージにはバージョンがあるので、バージョニング戦略について考える必要があります(たとえば、SemVer。org)
  • NuGetはSymbolSource.orgと統合されています(コミュニティ版も独自に設定しています)。これにより、リリースされたパッケージをいつでも簡単にデバッグできます。
  • パッケージリポジトリが
  • いくつかのプロジェクトで依存関係行列を維持する組織のことを容易にする、あるいは使用されているOSSライセンスのインベントリを構築するNuGetは(人々がコンポーネントアーキテクチャについて考えさせるパッケージを作成する利用可能なパッケージの更新
  • についてあなたに通知しすべての依存関係も同様にパッケージ化する必要があります)
  • パッケージの依存関係はaut omatically解決(あなたがいずれかを忘れることはできません)
  • NuGetが

を必要な時には、上記のリストは網羅的であるアセンブリバインディングリダイレクトを追加するのに十分なスマートですが、私は、私はこの答えの重要な利点をカバー願っています。私はもっ​​とあると確信しています。

乾杯、NuGetを使用する ザビエル

+0

ありがとうございます。私は論文が、私が逃した隠された利点だと思う!優れた投稿。 – Navid

3

理由は、プロジェクトのサイズを縮小する、プロジェクト内のすべてのライブラリを出荷する必要はありませんです。 NuGet Power Toolsを使用すると、パッケージのバージョンをPackages.configファイルに指定することにより、プロジェクトを初めて実行するときに必要なライブラリをすべてダウンロードすることができます。

ライブExapmle:削減プロジェクトのサイズ事項パッケージのコードと200MBのの500MBがプロジェクトに具体的な をアップロードする各time.Insteadをアップロードするための余分な200メガバイト本当に コストを大き持っ ソリューション場合project.Likeの展開ながら、 dllファイルはpackages.configファイルでリファレンスを設定するだけです。

関連する問題