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

时间:2012-08-16 22:11:21

标签: asp.net-mvc asp.net-mvc-4 nuget .net-assembly

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

更新

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

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

2 个答案:

答案 0 :(得分:26)

  

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

这是一个问题,你需要询问框架的设计者。

  

哪些对于一个空的项目来说真的很重要,这个项目将是一个网站,没有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:

enter image description here

答案 1 :(得分:22)

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

  • 升级到通过NuGet提供的组件 - MVC本身和其他相关组件(Razor,Web API),无需等待ASP.NET MVC,.NET或Visual Studio的新“大”版本。
  • 这也意味着您可以在MVC之外使用各个部分 - 例如,可以在ASP.NET之外使用Web API。
  • 越来越多的组件在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,它已经过高度组件化,可以让开发人员在何处以及如何使用它们方面具有很大的灵活性。如果您想最小化NuGet包,可以使用Basic模板。

当您升级到Basic和Internet模板时,您将看到更多软件包以支持项目提供的其他功能。 Internet带来了几个开源的非Microsoft代码包,如OAuth和JavaScript库。

有许多JavaScript包,当你考虑它时,这是一件非常好的事情,因为这意味着NuGet会自动为你处理JavaScript依赖 - 如果你想升级jQueryUI,而jQueryUI又要求新的版本jQuery,它会自动为你升级jQuery。