web-dev-qa-db-fra.com

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

J'essaie de comprendre le lien entre un projet C # "ASP.NET 5 Class Library" (vNext) et ASP.NET. Pourquoi créer un projet avec ce modèle plutôt qu’un simple projet "Class Library" 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 simplement un projet pour la couche de logique applicative. Un nouveau site Web WebApi ASP.NET fera éventuellement référence à ce projet, mais ce n'est pas pertinent pour le moment.

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

97
mkaj

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

Les projets de bibliothèque de classes ASP.NET 5 présentent des avantages (. Kproj) par rapport aux projets de bibliothèque de classes (. Csproj):

  1. Les bibliothèques de classes ASP.NET 5 prennent facilement en charge la compilation croisée de projets sur plusieurs cibles, telles que aspnet50, aspnetcore50, net45, et diverses autres variantes de bibliothèques de classes portables. Cela inclut la prise en charge enrichie par Visual Studio d'Intellisense pour vous informer des API disponibles pour quelles cibles.
  2. Les packages NuGet sont créés automatiquement, ce qui est extrêmement courant avec les bibliothèques de classes.
  3. Meilleure productivité en ce qui concerne l'actualisation automatique de Solution Explorer lorsque le système de fichiers est modifié. Moins de conflits dans le contrôle de code source lorsque vous essayez de fusionner des modifications conflictuelles dans le fichier * .csproj.
  4. Peut être compilé sur plusieurs plates-formes (en partie parce que cela ne dépend pas de MSBuild)

Vous pouvez référencer un projet * .csproj à partir d'un projet * .kproj (la nouvelle prévisualisation de Visual Studio 2015 l'a rendu beaucoup plus simple), mais cela a toujours été possible avec certaines étapes manuelles.

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

En ce qui concerne les noms, il s'agit d'un vestige de l'histoire qui sera bientôt abordé. 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 (multiplate-forme)
  • Bibliothèque de classes .NET (multiplate-forme)

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 classe (paquet)
  • Application console (package)

Ceux-ci utilisent le project.json et le DNX (.NET Execution Environment) pour générer, exécuter et mettre en package (dans un package NuGet) le projet.

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

VS2015 RC Class Lib / Console App templates

100
Eilon

Ceci 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 ne l'obtenez pas dans la bibliothèque normale de la classe C #.

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

10
Yishai Galatzer

D'après ce que j'ai compris, l'un des avantages est que le produit final du projet ASP.NET 5 Class Library est un package NuGet (plutôt que l'assembly .dll).

Vous pouvez générer le package NuGet en cliquant avec le bouton droit de la souris 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 pour que votre bibliothèque puisse exécuter plusieurs plates-formes.

3
Thomas Kadlec