8

サードパーティのコンポーネントを使用する場合は、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は、パッケージとその依存関係に関するこれらの一般的で面倒なタスクをすべて自動化します。これにより、サードパーティのオープンソースライブラリをプロジェクトのソースツリーに組み込む際の課題のほぼすべてが解消されます。

これらの手順は、プロジェクトをセットアップするときに実行する単純なタスクです。サードパーティのコンポーネントの追加を自動化し、構成ファイルでエラーが発生する可能性を減らすためだけですか?またはそれははるかに多くの責任があります!?

4

2 に答える 2

19

その価値はオープンに隠されています。NuGetなどのパッケージマネージャーは、自動化を使用してソフトウェアの依存関係を処理するのに役立ちます。多くの人は、それがオープンソースまたはサードパーティのコンポーネントのみを対象としていると想定していますが、独自の内部パッケージにも同様に使用できます。

NuGetの優れている点は、(いくつかの利点を挙げれば)次のとおりです。

  • NuGetは、ソースを分岐するのではなく、(プレリリースであっても)実際の「リリース」に暗黙的に依存するため、コンポーネントの再利用を推奨します
  • あなたはあなたのVCSリポジトリを肥大化させるバイナリを取り除くことができます(パッケージ復元機能)
  • これにより、パッケージ作成者はパッケージの消費方法について考えるようになり、パッケージのインストール中にコンポーネントの構成を処理するようになります(パッケージ作成者よりもパッケージの構成方法を最もよく知っているのは誰ですか?)。例としてELMAHについて考えてみてください。
  • パッケージリポジトリでのパッケージの作成と公開を効果的に自動化することは、継続的デリバリーの形式です(ソフトウェアコンポーネントの場合)。OctopusDeployはさらに一歩進んで、Webサイト全体を展開できるようにパッケージ化できるようにします。
  • NuGetは、ALMのベストプラクティスに従うことを推奨し、場合によっては強制します。たとえば、パッケージにはバージョンがあるため、バージョン管理戦略について考える必要があります(SemVer.orgなど)。
  • NuGetはSymbolSource.org(独自にセットアップするためのコミュニティエディションもあります)と統合されています。これにより、この情報を常に送信しなくても、リリースされたパッケージを簡単にデバッグできます。
  • 1つ以上のパッケージリポジトリがあると、組織は依存関係マトリックスを維持したり、複数のプロジェクトで使用されているOSSライセンスのインベントリを作成したりすることが容易になります。
  • NuGetは、利用可能なパッケージの更新について通知します
  • パッケージを作成すると、コンポーネントアーキテクチャについて考えるようになります(すべての依存関係もパッケージ化する必要があります)
  • パッケージの依存関係は自動的に解決されます(したがって、忘れることはできません)
  • NuGetは、必要に応じてアセンブリバインディングリダイレクトを追加できるほどスマートです

上記のリストは網羅的なものではありませんが、この回答で主なメリットを説明したことを願っています。きっともっとあると思います。

乾杯、ザビエル

于 2012-10-22T05:13:30.677 に答える
3

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

Live Exapmle:プロジェクトの展開中にプロジェクトサイズを縮小することが重要です。ソリューションに500Mbのコードと200Mbのパッケージサイズがある場合と同様に、毎回プロジェクトをアップロードするために追加の200mbのコストがかかります。具体的なdllファイルをアップロードする代わりに、パッケージに参照を設定する必要があります。 .configファイル。

于 2016-06-13T09:33:43.073 に答える