2012-03-20 7 views
36

私はそれを理解できません - どうして私はNuGetをsetup.exeまたはMSI経由でインストールするのではなく、どうして私に説明してください。どんな利点がありますか?NuGetを私のマシンに直接インストールするのはなぜですか?

たとえば、セットアップをダウンロードするのではなく、NuGet経由でEntity Framework 4.3をインストールする方が良いですか?また、NuGetを使用してエンティティフレームワークをインストールすると、作成した新しいソリューションやプロジェクトで利用できるようになります(少し混乱します)。

は、基本的にはNuGetは正常にインストールすることを何をするのか(その逆か!)行いません

答えて

32

プロジェクトにパッケージを追加するだけでなく、NuGetの最大の利点は依存性管理だと思います。

NuGetを使用すると、プロジェクトオーナーはライブラリをパッケージとしてパッケージ化できます。以前は、log4netなどの他のライブラリに依存していた場合、それらのアセンブリをsetup/zipファイルに含めてWebサイトにアップロードしていました。

NuGetを使用すると、これらの外部パッケージへの参照を.nuspecファイルに追加するだけです。 NuGetがパッケージをインストールすると、依存関係があることがわかり、自動的にパッケージをダウンロードしてインストールします。また、2つのパッケージが異なるバージョンに依存する場合は、インストールする正しいパッケージを見つけるように、競合管理もサポートしています。

NuGetがうまく動作するかどうかを判断する最も良い方法は、実際にそれを試してみることです。一度やったら、それには多くの利点があることが分かります。

+0

'自動的にこれらのパッケージをダウンロードしてインストールします.'、インターネットがサイトで利用できない場合はどうなりますか? – bjan

+0

"自動的にダウンロードする"は依存関係を参照していました。最初のパッケージのインストールは、ユーザーによって開始されます。インターネットにアクセスできない場合は、必要なパッケージを別の場所からダウンロードし、それらをターゲットマシンにコピーすることができます。これでローカルフォルダをNuGetパッケージリポジトリに追加することができ、インストールはnuget.orgではなくそこから取得します。 – Kiliman

+0

私は最近、私を混乱させた問題に直面しました。私は複数の助け(私)のライブラリを持つソリューションを開発しました、異なるライブラリは、ナゲット経由で追加された別のパッケージを使用していました。ライブラリ(1つのdllファイル)を別のソリューションに参照していましたが、VS2010では、欠落しているパッケージではなく参照先のライブラリについて不平を言っていました。この特定のケースでは、どのパッケージが不足しているかを知る方法はありますか? – bjan

19

Nugetは、いくつかの追加の利点があります。

  • それが自動的にへの参照を追加することにより、プロジェクトを構成します必要なアセンブリ、プロジェクトファイルの作成と追加(コンフィグレーションなど)
  • パッケージのアップデートを提供します
  • このすべてを行います非常に便利
16

何利点がありますか?

Nugetは、第三のライブラリの取り込みを簡素化:単一のコマンドラインでは、あなたのプロジェクトのためにあなたのパッケージを利用できるようにする(EntityFramework・パッケージをインストールしてください)。グーグルではなく、パッケージのダウンロードセットアップを参照してください...

自動アップデートは必須ではありません.Nuget設定ファイルでは、アプリケーションのバージョンまたはバージョンの範囲を指定できますと互換性があります。また

、私はNugetを経由して、エンティティフレームワークをインストールした場合、それはあなたがパッケージをインストールしたら、DLLが解にディレクトリにコピーされ

私が作成した新しいソリューションやプロジェクトに提供されていますレベルから、そこからソリューションの他のプロジェクトに参照することができます。

新しいソリューションごとに、パッケージを再インストールする方が良いソリューションです。ナゲットはとても簡単ですから、問題はありません。

+0

+1は、パッケージがソリューションレベルでインストールされていると言っています。 1つのソリューションで複数のWebアプリケーション(プロジェクト)を使用することは珍しくありません。 – styfle

+0

私は、複数の支援ライブラリを持つソリューションを開発しました。異なるライブラリには、ナゲット経由で追加されたさまざまなパッケージが使用されていました。ライブラリ(1つのdllファイル)を別のソリューションに参照していましたが、VS2010では、欠落しているパッケージではなく参照先のライブラリについて不平を言っていました。 – bjan

5

NugetはDLL地獄の作成に貢献し、特にいわゆる "パッケージ"の異なるバージョンが出現したときに、ソリューションが非常に迅速に制御から外れるようにします。アセンブリのバージョン管理とは別に、現在はnugetパッケージのバージョンがあります。 NugetはDLL上に別のラッパーを追加するだけで、開発者の生活を楽にするものは何もしません。

+1

質問は、なぜナゲットを使うべきなのかということでした。私の答えは - 彼らの人生をより困難にし、dllの地獄の問題を強化することです。どのように答えが得られないのでしょうか? –

+0

バランスの取れた音声を提供いただきありがとうございます。私はOPが長所と短所を求めていたと思う。 –

+1

誰かが "なぜ私はとても美しいのですか?"スタックのオーバーフローで表示される唯一の答えは、その人がどれほど美しいかの説明です。問題は正解を求めているにもかかわらず、否定的なものも考慮するほうが建設的です。 – bryjohns

関連する問題