web-dev-qa-db-ja.com

なぜASP.NET MVC 4には多くのNuGetパッケージがあり、どれが本当に重要なのですか?

タイトルにあるように、ASP.NET MVC 4プロジェクトにNuGetパッケージが多すぎるのはなぜですか?フレームワーク全体がパッケージに分割されましたか? Webサイトになる、APIがないなどの空のプロジェクトで本当に重要なものはどれですか。

[〜#〜]更新[〜#〜]

明確にするために、基本的な混乱を1つに数えない限り、問題はありません。新しいMVC 4プロジェクトにデフォルトで非常に多くのパッケージがインストールされている理由を知りたいだけですか?空のプロジェクトには、パッケージの1つの完全なページがあります。インターネットプロジェクトには、3つの完全なページのパッケージがあります。

私の現在のMVC 3プロジェクトは最大5つのパッケージを使用しているので、なぜこれが気になるのでしょうか。

38
Gup3rSuR4c

タイトルにあるように、ASP.NET MVC 4プロジェクトにNuGetパッケージが多すぎるのはなぜですか?

これは、フレームワークの設計者に尋ねる必要がある質問です。

Webサイトになる、APIがないなどの空のプロジェクトで本当に重要なものはどれですか。

ルーティングを構成し、Razorビューをレンダリングするアクションでコントローラーを定義できるようにする厳密な最小値は次のとおりです。

<packages>
  <package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.Razor" version="2.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
</packages>

または、ページの半分だけを好む場合:

enter image description here

26
Darin Dimitrov

ASP.NET MVCは、ASP.NET MVC 3ツールの更新以降、NuGetパッケージを介して提供されることが増えています。これにはいくつかの利点があります。

  • ASP.NET MVC、.NET、またはVisual Studioの新しい「ビッグ」リリースを待たずに、NuGetを介して配信されるコンポーネントへのアップグレード-MVC自体およびその他の関連コンポーネント(Razor、Web API)。
  • これは、MVCの外部で必要に応じて個々のパーツを使用できることも意味します。たとえば、Web APIはASP.NETの外部で使用できます。
  • コンポーネントは、UIレイヤーとASP.NETの他の部分の間で共有されることがますます増えています。いくつかの例:ルーティングはWebフォームおよびWebページと共有され、RazorはWebページと共有され、新しいOAuthパーツはWebフォームと共有されます。

基本テンプレートのプロジェクトでは、次のパッケージを取得することがわかります。

  • Microsoft.AspNet.Mvc
  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebApi
  • Microsoft.AspNet.WebApi.Client
  • Microsoft.AspNet.WebApi.Core
  • Microsoft.AspNet.WebApi.WebHost
  • Microsoft.AspNet.WebPages
  • Microsoft.Net.Http
  • Microsoft.Web.Infrastructure
  • Newtonsoft.Json

9つのうち5つは、高度にコンポーネント化されたWeb APIに使用され、開発者がそれらをどこでどのように使用できるかについて多くの柔軟性を可能にします。 NuGetパッケージを最小化する場合は、基本テンプレートを使用できます。

基本テンプレートとインターネットテンプレートに進むと、プロジェクトが提供する追加機能をサポートするためのパッケージがさらに表示されます。インターネットには、OAuthやJavaScriptライブラリなど、Microsoft以外のオープンソースコードのパッケージがいくつか含まれています。

多くのJavaScriptパッケージがあります。これは、NuGetがJavaScriptの依存関係を自動的に処理することを意味するので、考えると本当に良いことです。jQueryUIをアップグレードする場合は、jQueryの新しいバージョンが必要になり、 jQueryが自動的にアップグレードされます。

22
Jon Galloway