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

Gup*_*R4c 38 asp.net-mvc .net-assembly nuget asp.net-mvc-4

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

UPDATE

为了澄清,我没有问题,除非你将基本的混淆视为一个.我只想知道为什么新的MVC 4项目默认安装了这么多软件包?一个空项目有一整页的包.互联网项目有三整页的包.

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

Dar*_*rov 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>
Run Code Online (Sandbox Code Playgroud)

或者如果您只想要一页的1/2:

在此输入图像描述


Jon*_*way 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.

  • 不同意所有Javascript Nuget软件包卡在"空"MVC项目中是一件好事.我不想等到升级到最新的jquery补丁级别,直到它被发布到Nuget,这可能落后一年多.我会自己更新它 - 它是一个单独的文件,而Nuget正在阻碍它. (3认同)