2015-02-28 19 views
8

Durante la creazione di uno ASP.NET 5 applicazione dal VS file project.json contiene la seguente voce:Cosa sono aspnet50 e aspnetcore50?

"frameworks": { 
    "aspnet50": { }, 
    "aspnetcore50": { } 
} 

Ora, che cosa è questo framework sezione e perché ci sono le voci "aspnet50" e "aspnetcore50"? So che ora c'è sia il .NET completo che il Core CLR, ma tuttavia questa sezione sembra implicare che ci sono due ASP.NET 5 diversi: uno ASP.NET 5 e uno ASP.NET Core 5. C'è solo un framework ASP.NET 5 che può essere eseguito su .NET o sul Core CLR corretto? Se è così, perché abbiamo bisogno di quelle voci?

+0

L'hai detto tu stesso. "Esiste solo un framework ASP.NET 5 che può essere eseguito su .NET completo o su Core CLR". – brk

+0

Tutti i nuovi target hanno il prefisso aspnet al momento e il target completo del framework .NET è net45.In questa conversazione su twitter (https://twitter.com/onovotny/status/524381569323384832), David Fowler ha risposto alla stessa domanda. Una differenza tra net45 e aspnet50 che cita è la presenza di [Assembly Neutral Interfaces] (http://davidfowl.com/assembly-neutral-interfaces/) in quest'ultimo. [Il blog di Rick Strahl] (http://weblog.west-wind.com/posts/2014/Dec/02/Creating-multitarget-NuGet-Packages-with-vNext) ha anche buone informazioni sul targeting multiplo nel nuovo progetto struttura. – Adam

risposta

1

Il "nuovo" modo di fare le cose su Microsoft consente di ospitare il CLR al di fuori di Windows. Ho un blogpost per farlo, nel caso siate interessati.

Ora, per fare ciò, hanno dovuto dividere un po 'il framework, e così è nato il CORE CLR. Dal webpage:

.NET Core 5 è il piccolo runtime ottimizzato che è alla base di ASP.NET core 5. Attualmente gira su Windows, e verrà esteso per supportare Linux e Mac. È un design modulare ad alte prestazioni e supporta l'integrazione completa per semplificare l'adozione di nuove versioni di .NET Core senza influire su altre app. Questi prodotti sono attivamente sviluppati dal team .NET e in collaborazione con una comunità di sviluppatori open source. Insieme ci dedichiamo al miglioramento e all'estensione della piattaforma .NET con nuove funzionalità e nuovi scenari.

Per ottenere ciò, alcune funzioni sono state ovviamente eliminate. E Asp.net deve indirizzare un sottoinsieme limitato affinché la tua app funzioni sul framework principale. Fondamentalmente dice al framework di limitare il set di funzionalità a tua disposizione per ciò che è supportato su entrambi.

Questa è la mia comprensione, ma potrei sbagliarmi :-)

1

La voce "quadri" in project.json permette di supportare sia ASP.NET core 5.0 e ASP.NET 5.0 nello stesso progetto. Ogni framework può avere diversi gruppi di dipendenze dal momento che .NET Core ha una limitata retrocompatibilità.

  • aspnet50 o ASP.NET 5.0 utilizzerà il livello di computer .NET installato sulla vostra macchina Framework che è in genere compatibile con l'ecosistema esistente.

  • aspnetcore50 o ASP.NET core 5,0 utilizzerà la nuova applicazione locale .NET Core platform. .NET Core è un open source, multipiattaforma e framework modulare contenente un sottoinsieme di .NET Framework. Lo svantaggio del targeting di .NET Core è che i pacchetti di riferimento non possono avere dipendenze da .NET Framework completo.

Se avete solo intenzione di colpire uno di loro (forse perché c'è una dipendenza a una libreria che richiedono il pieno .NET Framework come Entity Framework 6), è possibile rimuovere l'altra.