38

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

更新

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

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

4

2 回答 2

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:

在此处输入图像描述

于 2012-08-17T05:58:40.557 回答
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 表单和网页共享,Razor 与网页共享,新的 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
  • 牛顿软件.Json

九个中有五个用于 Web Api,它已经高度组件化,允许开发人员在哪里以及如何使用它们方面有很大的灵活性。如果要最小化 NuGet 包,可以使用 Basic 模板。

随着您进入 Basic 和 Internet 模板,您会看到更多的包来支持项目提供的附加功能。Internet 引入了多个开源、非 Microsoft 代码包,例如 OAuth 和 JavaScript 库。

有很多 JavaScript 包,仔细想想,这是一件非常好的事情,因为这意味着 NuGet 会自动为您处理 JavaScript 依赖项——如果您想升级 jQueryUI,而后者又需要新版本的 jQuery,它'会自动为你升级 jQuery。

于 2012-08-27T20:42:17.810 回答