34 votos

¿Por qué ASP.NET MVC 4 tiene tantos paquetes NuGet y cuáles son realmente importantes?

Como dice el título, ¿por qué los proyectos de ASP.NET MVC 4 tienen tantos paquetes NuGet? ¿Está todo el framework dividido en paquetes ahora? ¿Cuáles son realmente importantes para un proyecto vacío que será un sitio web, sin API, etc.?

ACTUALIZACIÓN

Para aclarar, no estoy teniendo problemas, bueno, a menos que cuentes la confusión básica como uno. Sólo quiero saber por qué los nuevos proyectos de MVC 4 tienen tantos paquetes instalados por defecto. Un proyecto vacío tiene una página completa de paquetes. Un proyecto de Internet tiene tres páginas completas de paquetes.

Tengo curiosidad por saber a qué se debe esto porque mis proyectos actuales de MVC 3 utilizan como máximo cinco paquetes.

23voto

Darin Dimitrov Puntos 528142

Como dice el título, ¿por qué los proyectos de ASP.NET MVC 4 tienen tantos paquetes NuGet?

Esa es una pregunta que hay que hacer a los diseñadores del marco.

¿Cuáles son realmente importantes para un proyecto vacío que será un sitio web, sin API, etc.?

Aquí está el mínimo estricto que te permitirá configurar el enrutamiento y definir un controlador con una acción que renderice una vista 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>

o si lo prefiere sólo la mitad de una página:

enter image description here

22voto

Jon Galloway Puntos 28243

Desde la actualización de las herramientas de ASP.NET MVC 3, la entrega de paquetes NuGet es cada vez más frecuente. Esto ofrece varias ventajas:

  • Actualizaciones a los componentes suministrados a través de NuGet: el propio MVC y otros componentes asociados (Razor, Web API) sin esperar a una nueva "gran" versión de ASP.NET MVC, .NET o Visual Studio.
  • Esto también significa que puedes utilizar partes individuales como quieras fuera de MVC - por ejemplo, la API Web puede ser utilizada fuera de ASP.NET.
  • Cada vez más, los componentes se comparten entre las capas de interfaz de usuario y otras partes de ASP.NET. Algunos ejemplos: el enrutamiento se comparte con los formularios web y las páginas web, Razor se comparte con las páginas web, las nuevas partes de OAuth se comparten con los formularios web.

Observará que en un proyecto de la plantilla Básica, obtendrá los siguientes paquetes:

  • 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

Cinco de los nueve se utilizan para la Api Web, que ha sido altamente componentizada para permitir a los desarrolladores una gran flexibilidad sobre dónde y cómo pueden utilizarlos. Si quieres minimizar tus paquetes NuGet, puedes utilizar la plantilla Basic.

A medida que se avanza en las plantillas Basic e Internet, se ven más paquetes para apoyar las características adicionales que los proyectos proporcionan. Internet aporta varios paquetes de código abierto, no de Microsoft, como OAuth y bibliotecas de JavaScript.

Hay un montón de paquetes de JavaScript, que es una cosa muy buena cuando se piensa en ello, ya que esto significa que NuGet está manejando automáticamente las dependencias de JavaScript para usted - si desea actualizar jQueryUI que a su vez requiere una nueva versión de jQuery, se actualizará automáticamente jQuery para usted.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X