38

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

アップデート

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

私の現在のMVC3プロジェクトが最大5つのパッケージを使用しているため、これがなぜであるのか興味があります。

4

2 に答える 2

26

タイトルが示すように、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>

または、ページの 1/2 のみを使用する場合:

ここに画像の説明を入力

于 2012-08-17T05:58:40.557 に答える
22

ASP.NET MVC は、ASP.NET MVC 3 Tools Update 以降、NuGet パッケージ経由で提供されることが増えています。これにはいくつかの利点があります。

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

Basic テンプレートのプロジェクトでは、次のパッケージが取得されます。

  • 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 に使用されます。Web Api は高度にコンポーネント化されており、開発者はそれらをどこでどのように使用できるかについて多くの柔軟性を得ることができます。NuGet パッケージを最小限に抑えたい場合は、基本テンプレートを使用できます。

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

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

于 2012-08-27T20:42:17.810 に答える