Pourquoi créer un projet de bibliothèque de classes ASP.NET 5?

98

J'essaie de comprendre ce qu'un projet C # «ASP.NET 5 Class Library» (vNext) a à voir avec ASP.NET. Pourquoi créer un projet avec ce modèle plutôt qu'un simple projet "Bibliothèque de classes" C #?

J'aime les nouvelles fonctionnalités, telles que le fichier project.json plutôt que le fichier .csproj, etc., mais il ne semble pas correct de créer une bibliothèque de classes "ASP.NET" lorsque le projet n'a rien à voir avec ASP.NET ou IIS, etc. C'est juste un projet pour la couche de logique métier. Un nouveau site Web WebApi ASP.NET fera éventuellement référence à ce projet, mais ce n'est pas pertinent à ce stade.

Est-ce juste mal nommé? Doit-il simplement s'appeler "Bibliothèque de classes vNext" et ne pas utiliser une icône qui ressemble à une application Web?

mkaj
la source
Existe-t-il une estimation du moment où ils pensent qu'il est possible d'ajouter un projet existant de type bonne vieille bibliothèque de classes? C'est la dernière fois que je m'attendais à hault ma migration MVC 5 vers ASP.NET 5 MVC 6.
radbyx
«Bibliothèque de classes ASP.NET 5» a une structure différente de ASP .NET Core, mais core a sa propre bibliothèque de classes Core , utilisez-la à la place.
Jaider

Réponses:

100

Pourquoi créer un projet de bibliothèque de classes ASP.NET 5?

Il existe un certain nombre d'avantages des projets de bibliothèque de classes ASP.NET 5 ( .kproj) par rapport aux projets de bibliothèque de classes ( .csproj):

  1. Bibliothèques de classes ASP.NET 5 prennent en charge facilement des projets cross-compilation à cibles multiples, tels que aspnet50, aspnetcore50, net45et d'autres variations de bibliothèque de classe portable. Cela inclut une prise en charge riche de Visual Studio pour Intellisense afin de vous informer des API disponibles pour quelles cibles.
  2. Les packages NuGet sont créés automatiquement, ce qui est une chose extrêmement courante à faire avec les bibliothèques de classes.
  3. Meilleure productivité en ce qui concerne l'actualisation automatique de l'Explorateur de solutions lorsque le système de fichiers change. Moins de conflits dans le contrôle de code source lors de la tentative de fusion de modifications conflictuelles dans le fichier * .csproj.
  4. Peut être compilé multiplateforme (en partie parce qu'il ne dépend pas de MSBuild)

Vous pouvez référencer un projet * .csproj à partir d'un projet * .kproj (cela a été rendu beaucoup plus facile avec le nouvel aperçu de Visual Studio 2015), mais cela a toujours été possible avec quelques étapes manuelles.

Pourquoi le nom contient-il "ASP.NET"?

En ce qui concerne les noms, c'est une relique de l'histoire qui sera bientôt abordée. Le nouveau type de projet est utile bien au-delà des applications ASP.NET 5. Attendez-vous à voir de nouveaux noms dans un futur aperçu de Visual Studio:

  • Application console .NET (multiplateforme)
  • Bibliothèque de classes .NET (multiplateforme)

Mise à jour 13/05/2015

Avec la version de Visual Studio 2015 RC, vous pouvez voir les noms de modèle de projet mis à jour:

  • Bibliothèque de classes (package)
  • Application console (package)

Ceux-ci utilisent le project.jsonfichier et l'environnement d'exécution .NET (DNX) pour générer, exécuter et empaqueter (dans un package NuGet) le projet.

Ces modèles de projet continuent à s'afficher dans la boîte de dialogue Nouveau projet sous le nœud "Web", mais s'affichent désormais également dans le nœud principal "Visual C #".

Modèles d'applications VS2015 RC Class Lib / Console

Eilon
la source
pouvez-vous développer sur # 2 - voulez-vous dire que l'intellisense suggère une API puis télécharge le package nuget pour vous? Je tape JQuery et il me le donnera?
Simon_Weaver
3
@Simon_Weaver Je veux dire que, alors que le projet de bibliothèque de classes ordinaire ne produit qu'une DLL et un PDB, le nouveau génère un NUPKG (package NuGet) qui peut être téléchargé sur nuget.org.
Eilon
2
.kproj a depuis été renommé en .xproj
Boris Lipschitz
10

C'est une observation intéressante, le modèle actuel générera une bibliothèque de classes compatible avec le runtime ASP.NET 5. Vous n'obtenez pas cela à partir de la bibliothèque de classes C # normale.

J'ai déposé le problème suivant pour suivre cette question de conception - https://github.com/aspnet/Home/issues/281

Yishai Galatzer
la source
Je vais surveiller votre problème merci. Même problème de dénomination avec "ASP.NET 5 Console Application" évidemment. Peut-être devrait-il être appelé "Application console vNext", sinon les développeurs peuvent la confondre avec une sorte d'application console sur un site Web ASP.NET. Peut-être que l'emplacement des modèles doit être déplacé de «Visual C # -> Web» à «Visual C # -> vNext»
mkaj
Le problème github a été résolu. De meilleurs noms de projets - merci: github.com/aspnet/Home/issues/281
mkaj
3

D'après ce que je comprends, un avantage est que le produit final du projet de bibliothèque de classes ASP.NET 5 est un package NuGet (plutôt que simplement l'assembly .dll).

Vous pouvez générer le package NuGet en cliquant avec le bouton droit sur le projet dans Visual Studio 2015 et en choisissant l'option «Publier ...». Ou vous pouvez utiliser "KPM pack" sur la ligne de commande.

En outre, vous avez la possibilité d'utiliser le runtime ASP.NET 5 Core afin que votre bibliothèque puisse s'exécuter sur plusieurs plates-formes.

Thomas Kadlec
la source
Est-ce mal nommé? N'a rien à voir avec ASP.NET?
mkaj
1
L'un des principaux objectifs d'ASP.NET 5 est de lui permettre de fonctionner sur plusieurs plates-formes. Certains ont demandé "cela ne devrait-il pas être appelé .NET Core à la place?" Au moins pour le moment, l'approche multiplateforme de Microsoft ne concerne que le Web (et les applications de console) et ne prend pas en charge le développement de bureau comme Java. Pour souligner qu'il s'agit du Web, ils appellent tout cela sous le nom «ASP.NET 5». Si vous souhaitez produire une bibliothèque qui s'exécute sur plusieurs plates-formes, il doit s'agir d'une bibliothèque de classes ASP.NET 5.
Thomas Kadlec
Cela signifie que je peux dire à mon patron `` oui '' quand il demande `` ASP.NET est-il la meilleure technologie '' - c'est pourquoi
Simon_Weaver