2016-07-03 7 views

Antwort

36

Sie können ASP.NET Core auf .NET Core 1.0 oder .NET Framework 4.5.1+ ausführen. Da es sich bei "ASP.NET Core" nur um eine Reihe von NuGet-Paketen handelt, können Sie sie in ein Projekt installieren, das auf ein Framework ausgerichtet ist.

Zum Beispiel würde eine .NET-Core-Projekt wie folgt aussehen:

"dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { } 
    } 

Während ein .NET Framework-Projekt aussehen würde (im Fall von .NET 4.6.1):

"dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0" 
    }, 
    "frameworks": { 
    "net461": { } 
    } 

Das funktioniert, weil das Microsoft.AspNetCore.Mvc-Paket Ziele für .NET Framework 4.5.1 und .NET Standard Library 1.6 aufweist.

Es ist auch möglich, dass beide Frameworks von einem Projekt zu bauen:

"dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    }, 
    "frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     } 
    } 
    } 

In diesem Fall beachten Sie, dass die Microsoft.NETCore.App Abhängigkeit innerhalb des frameworks Abschnitt bewegt wird. Dies ist notwendig, da diese Abhängigkeit nur beim Erstellen für netcoreapp1.0, nicht net461 benötigt wird.

+2

ASP.NET Core 2.0 wird nicht in der Lage sein, das gesamte .NET-Framework zu targetieren ([siehe github] (https://github.com/aspnet/Home/issues/2022)), nur .NET Core 2.0 –

+5

Aaaaaaaund glücklicherweise änderten sie ihre Meinung ([Quelle] (http://www.theregister.co.uk/2017/05/11/microsoft_asp_net_core_2_0/)). –

4

Sie können beides - also nur Ziel-CLR, Core-CLR oder beides. Zur Zieldesktop Clr 4.6.1 verwenden Sie den net461 Spitznamen als Zielframework. Um auf Core Clr zu zielen, verwenden Sie netcoreapp1.0. Du kannst sie nebeneinander benutzen, aber es fühlt sich ein bisschen komisch an - warum würdest du das sogar im Fall von Apps machen?

+1

Danke. Einige Webhosting-Dienste unterstützen nur .NET 4.6.1. Also möchte ich Asp.NET Core verwenden, aber trotzdem in der Lage sein, es auf diesen Diensten zu locken. –

+1

@AnyName Nun, ASP.Net Core Targeting Desktop .NET ist immer noch Asp.NET Core. Wenn Sie keinen separaten Code haben, wozu dient das Cross-Compiling - zielen Sie einfach auf net4x ab? Auf der anderen Seite gibt es tatsächlich zwei "Geschmacksrichtungen" von Asp.NET Core beim Targeting von "netcoreapp1.0" - es kann eine portable oder eigenständige (d. H. Seflcontained) App sein. Wenn Ihr Anbieter portable .NET Core-Apps nicht unterstützt, erstellen Sie eine eigenständige App - sie ist eigenständig (d. H. Enthält die Laufzeitumgebung) und hat daher keine zusätzlichen Abhängigkeiten. – Pawel

+0

Bedeutet das, dass ich die App nicht bereitstellen kann, wenn der Anbieter .NET Core nicht unterstützt (unabhängig von der .NET-Zielversion)? Momentan verwende ich Shared Host, so dass es nicht so viele Optionen gibt. –

Verwandte Themen