¿Por qué crear un proyecto de biblioteca de clases ASP.NET 5?

98

Estoy tratando de averiguar qué tiene que ver un proyecto de "Biblioteca de clases ASP.NET 5" (vNext) C # con ASP.NET. ¿Por qué crear un proyecto con esta plantilla en lugar de un proyecto normal de "Biblioteca de clases" de C #?

Me gustan las nuevas características, como el archivo project.json en lugar del archivo .csproj, etc., pero no parece correcto crear una biblioteca de clases "ASP.NET" cuando el proyecto no tiene nada que ver con ASP.NET o IIS, etc. Es solo un proyecto para la capa de lógica empresarial. Un nuevo sitio web WebApi ASP.NET eventualmente hará referencia a este proyecto, pero eso no es relevante en este momento.

¿Tiene mal nombre? ¿Debería llamarse simplemente "Biblioteca de clases vNext" y no usar un icono que parezca una aplicación web?

mkaj
fuente
¿Hay una estimación de cuándo creen que es posible agregar un proyecto existente del tipo biblioteca de clases antigua? Esta es la última idea que esperaba para transportar mi MVC 5 a la migración de ASP.NET 5 MVC 6.
radbyx
La "biblioteca de clases de ASP.NET 5" tiene un marco diferente al de ASP .NET Core, pero el núcleo tiene su propia biblioteca de clases de Core , utilícelo en su lugar.
Jaider

Respuestas:

100

¿Por qué crear un proyecto de biblioteca de clases ASP.NET 5?

Hay una serie de beneficios de los proyectos de biblioteca de clases de ASP.NET 5 ( .kproj) sobre los proyectos de biblioteca de clases ( .csproj):

  1. Bibliotecas ASP.NET 5 clase soportan fácilmente los proyectos cross-compilar a múltiples objetivos, como aspnet50, aspnetcore50, net45, y varias otras variaciones de bibliotecas de clases portátil. Esto incluye un amplio soporte de Visual Studio para Intellisense para notificarle qué API están disponibles para qué destinos.
  2. Los paquetes NuGet se crean automáticamente, lo cual es algo muy común que se hace con las bibliotecas de clases.
  3. Mejor productividad cuando se trata de cosas como la actualización automática de Solution Explorer cuando cambia el sistema de archivos. Menos conflictos en el control de fuente al intentar fusionar cambios conflictivos en el archivo * .csproj.
  4. Se puede compilar multiplataforma (en parte porque no depende de MSBuild)

Puede hacer referencia a un proyecto * .csproj desde un proyecto * .kproj (esto se hizo mucho más fácil con la nueva vista previa de Visual Studio 2015), pero siempre fue posible con algunos pasos manuales.

¿Por qué el nombre tiene "ASP.NET" en él?

En lo que respecta a los nombres, es una reliquia de la historia que pronto se abordará. El nuevo tipo de proyecto es útil mucho más allá de las aplicaciones ASP.NET 5. Espere ver nuevos nombres en una vista previa futura de Visual Studio:

  • Aplicación de consola .NET (multiplataforma)
  • Biblioteca de clases de .NET (multiplataforma)

Actualización 13/05/2015

Con el lanzamiento de Visual Studio 2015 RC , puede ver los nombres de las plantillas de proyectos actualizados:

  • Biblioteca de clases (paquete)
  • Aplicación de consola (paquete)

Estos usan el project.jsonarchivo y el entorno de ejecución .NET (DNX) para compilar, ejecutar y empaquetar (en un paquete NuGet) el proyecto.

Estas plantillas de proyecto continúan apareciendo en el cuadro de diálogo Nuevo proyecto en el nodo "Web", pero ahora también aparecen en el nodo principal "Visual C #".

Plantillas de aplicaciones VS2015 RC Class Lib / Console

Eilon
fuente
¿Puedes expandir el n. ° 2? ¿Quieres decir que intellisense sugiere una API y luego descarga el paquete nuget por ti? Escribo JQuery y me lo dará.
Simon_Weaver
3
@Simon_Weaver Quiero decir que mientras que el proyecto de biblioteca de clases normal produce solo una DLL y PDB, el nuevo genera un NUPKG (paquete NuGet) que se puede cargar en nuget.org.
Eilon
2
.kproj desde entonces ha sido renombrado a .xproj
Boris Lipschitz
10

Esta es una observación interesante, la plantilla actual generará una biblioteca de clases compatible con el tiempo de ejecución de ASP.NET 5. No obtienes eso de la biblioteca de clases C # normal.

Presenté el siguiente problema para rastrear esta pregunta de diseño: https://github.com/aspnet/Home/issues/281

Yishai Galatzer
fuente
Veo tu problema gracias. El mismo problema de nomenclatura con la "Aplicación de consola ASP.NET 5", obviamente. Quizás debería llamarse "Aplicación de consola vNext", de lo contrario, los desarrolladores pueden confundirla con algún tipo de aplicación de consola para un sitio web ASP.NET. Quizás la ubicación de las plantillas debería moverse de "Visual C # -> Web" a "Visual C # -> vNext"
mkaj
El problema de github se ha cerrado. Mejores nombres de proyectos - gracias: github.com/aspnet/Home/issues/281
mkaj
3

Por lo que entiendo, un beneficio es que el producto final del proyecto de biblioteca de clases ASP.NET 5 es un paquete NuGet (en lugar de solo el ensamblado .dll).

Puede generar el paquete NuGet haciendo clic derecho en el proyecto en Visual Studio 2015 y eligiendo la opción "Publicar ...". O puede usar "paquete KPM" en la línea de comando.

Además, tiene la capacidad de usar el tiempo de ejecución de ASP.NET 5 Core para que su biblioteca pueda ejecutarse en varias plataformas.

Thomas Kadlec
fuente
¿Tiene mal nombre? ¿No tiene nada que ver con ASP.NET?
mkaj
1
Uno de los objetivos clave de ASP.NET 5 es permitir su ejecución multiplataforma. Algunos han preguntado "¿no debería llamarse .NET Core en su lugar?" Al menos por ahora, el enfoque multiplataforma de Microsoft se trata solo de la web (y las aplicaciones de consola) y no admite el desarrollo de escritorio como Java. Para enfatizar que se trata de la web, lo están marcando todo con el nombre "ASP.NET 5". Si desea producir una biblioteca que se ejecute en varias plataformas, debería ser una biblioteca de clases ASP.NET 5.
Thomas Kadlec
Significa que puedo decirle a mi jefe 'sí' cuando me pregunte 'si ASP.NET es la mejor tecnología', por eso
Simon_Weaver