Perché creare un progetto di libreria di classi ASP.NET 5?


98

Sto cercando di capire cosa ha a che fare un progetto C # "Libreria di classi ASP.NET 5" (vNext) con ASP.NET. Perché creare un progetto con questo modello anziché un semplice progetto "Libreria di classi" C #?

Mi piacciono le nuove funzionalità, come il file project.json piuttosto che il file .csproj ecc., Ma non sembra giusto creare una libreria di classi "ASP.NET" quando il progetto non ha nulla a che fare con ASP.NET o IIS ecc. È solo un progetto per il livello di logica aziendale. Un nuovo sito Web WebApi ASP.NET farà eventualmente riferimento a questo progetto, ma a questo punto non è rilevante.

È solo un nome sbagliato? Dovrebbe essere chiamato semplicemente "vNext Class Library" e non utilizzare un'icona che assomiglia a un'app web?


C'è una stima per quando pensano che sia possibile aggiungere un progetto esistente di tipo good old Class Library? Questo è l'ultimo pensiero che mi aspettavo di eseguire la migrazione da MVC 5 a ASP.NET 5 MVC 6.
radbyx

"Libreria di classi ASP.NET 5" ha un framework diverso da ASP .NET Core, ma core ha una propria libreria di classi Core , usalo invece.
Jaider

Risposte:


100

Perché creare un progetto di libreria di classi ASP.NET 5?

Esistono numerosi vantaggi dei progetti di libreria di classi ASP.NET 5 ( .kproj) rispetto ai progetti di libreria di classi ( .csproj):

  1. Librerie di ASP.NET 5 classi facilmente sostenere progetti cross-compilazione a più obiettivi, come ad esempio aspnet50, aspnetcore50, net45e varie altre variazioni libreria di classi portatile. Ciò include il supporto completo di Visual Studio per Intellisense per notificare quali API sono disponibili per quali destinazioni.
  2. I pacchetti NuGet vengono creati automaticamente, operazione estremamente comune con le librerie di classi.
  3. Migliore produttività quando si tratta di cose come l'aggiornamento automatico di Esplora soluzioni quando il file system cambia. Meno conflitti nel controllo del codice sorgente durante il tentativo di unire modifiche in conflitto nel file * .csproj.
  4. Può essere compilato multipiattaforma (in parte perché non dipende da MSBuild)

Puoi fare riferimento a un progetto * .csproj da un progetto * .kproj (questo è stato reso molto più semplice con la nuova anteprima di Visual Studio 2015), ma è sempre stato possibile con alcuni passaggi manuali.

Perché il nome contiene "ASP.NET"?

Per quanto riguarda i nomi, è una reliquia della storia che presto verrà affrontata. Il nuovo tipo di progetto è utile ben oltre le applicazioni ASP.NET 5. Aspettatevi di vedere nuovi nomi in un'anteprima futura di Visual Studio:

  • Applicazione console .NET (multipiattaforma)
  • Libreria di classi .NET (multipiattaforma)

Aggiornamento 13/5/2015

Con il rilascio di Visual Studio 2015 RC puoi vedere i nomi dei modelli di progetto aggiornati:

  • Libreria di classi (pacchetto)
  • Applicazione console (pacchetto)

Questi usano il project.jsonfile e .NET Execution Environment (DNX) per creare, eseguire e creare un pacchetto (in un pacchetto NuGet) del progetto.

Questi modelli di progetto continuano a essere visualizzati nella finestra di dialogo Nuovo progetto sotto il nodo "Web", ma ora vengono visualizzati anche nel nodo principale "Visual C #".

Modelli VS2015 RC Class Lib / Console App


puoi espandere il punto 2 - vuoi dire che l'intellisense suggerisce un'API e quindi scarica il pacchetto nuget per te? Digito JQuery e me lo darà?
Simon_Weaver

3
@ Simon_Weaver Voglio dire che mentre il normale progetto di libreria di classi produce solo una DLL e un PDB, il nuovo genera un NUPKG (pacchetto NuGet) che può essere caricato su nuget.org.
Eilon

2
.kproj da allora è stato rinominato in .xproj
Boris Lipschitz

10

Questa è un'osservazione interessante, il modello corrente genererà una libreria di classi compatibile con il runtime ASP.NET 5. Non lo ottieni dalla normale libreria di classi C #.

Ho presentato il seguente problema per il monitoraggio di questa domanda di progettazione: https://github.com/aspnet/Home/issues/281


Guarderò il tuo problema grazie. Stesso problema di denominazione con "ASP.NET 5 Console Application" ovviamente. Forse dovrebbe essere chiamato "vNext Console Application", altrimenti gli sviluppatori potrebbero confonderlo con una sorta di app console per un sito Web ASP.NET. Forse la posizione dei modelli dovrebbe essere spostata da "Visual C # -> Web" a "Visual C # -> vNext"
mkaj

Il problema di GitHub è stato chiuso. Nomi di progetti migliori - grazie: github.com/aspnet/Home/issues/281
mkaj

3

Da quello che ho capito, un vantaggio è che il prodotto finale del progetto della libreria di classi ASP.NET 5 è un pacchetto NuGet (anziché solo l'assembly dll).

È possibile generare il pacchetto NuGet facendo clic con il pulsante destro del mouse sul progetto in Visual Studio 2015 e scegliendo l'opzione "Pubblica ...". Oppure puoi usare "KPM pack" dalla riga di comando.

Inoltre, hai la possibilità di usare il runtime ASP.NET 5 Core in modo che la tua libreria possa essere eseguita su più piattaforme.


Ha un nome sbagliato? Non ha niente a che fare con ASP.NET?
mkaj

1
Uno degli obiettivi principali di ASP.NET 5 è consentirne l'esecuzione su più piattaforme. Alcuni hanno chiesto "non dovrebbe invece chiamarsi .NET Core?" Almeno per ora l'approccio multipiattaforma di Microsoft riguarda solo il Web (e le app per console) e non supporta lo sviluppo desktop come Java. Per sottolineare che si tratta del Web, lo stanno marchiando con il nome "ASP.NET 5". Se vuoi produrre una libreria che gira su più piattaforme, dovrebbe essere una libreria di classi ASP.NET 5.
Thomas Kadlec

Significa che posso dire "sì" al mio capo quando chiede "ASP.NET è la migliore tecnologia" - ecco perché
Simon_Weaver
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.