为什么ASP.NET MVC 4有这么多的NuGet包,哪些是真正重要的?

正如标题所说,为什么ASP.NET MVC 4项目有很多NuGet包? 整个框架现在分成几个包? 对于一个空的项目来说,哪些是真正重要的,哪些是网站,没有API等?

UPDATE

为了澄清,我没有问题,除非你把一个基本的困惑计算在内。 我只是想知道为什么新的MVC 4项目默认安装了这么多的软件包? 一个空的项目有一整页的包。 互联网项目有三个完整的软件包页面。

我只是好奇,为什么这是因为我目前的MVC 3项目使用最多五个包。

正如标题所说,为什么ASP.NET MVC 4项目有很多NuGet包?

这是一个问题,你需要问这个框架的devise者。

对于一个空的项目来说,哪些是真正重要的,哪些是网站,没有API等?

这里是严格的最低限度,这将允许你configuration路由和定义一个控制器的动作渲染剃刀视图:

<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:

在这里输入图像说明

自ASP.NET MVC 3工具更新以来,ASP.NET MVC越来越多地通过NuGet包提供。 这提供了几个优点:

  • 升级到通过NuGet MVC本身和其他相关组件(Razor,Web API)交付的组件,而无需等待ASP.NET MVC,.NET或Visual Studio的新“大”版本。
  • 这也意味着你可以像使用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

Web API中有五个用于Web Api,它已经被高度组件化,使开发人员能够在何处以及如何使用它们方面拥有很大的灵活性。 如果你想最小化你的NuGet包,你可以使用基本模板。

随着您进入基本和Internet模板,您将看到更多的软件包来支持项目提供的附加function。 互联网带来了几个开源的,非微软的代码包,如OAuth和JavaScript库。

有很多JavaScript包,当你考虑这个时,这真是一件好事,因为这意味着NuGet会自动为你处理JavaScript的依赖关系 – 如果你想升级jQueryUI,而jQueryUI又需要新版本的jQuery,会自动为你升级jQuery。