2016-07-03 7 views

Odpowiedz

36

Można uruchomić środowisko ASP.NET Core na platformie .NET Core 1.0 lub .NET Framework 4.5.1+. Ponieważ "ASP.NET Core" to tak naprawdę tylko zestaw pakietów NuGet, możesz zainstalować je w projekcie kierowanym na dowolną frameworku.

Na przykład, projekt .NET Rdzeń będzie wyglądać następująco:

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

Choć projekt Framework będzie wyglądać (w przypadku NET 4.6.1):

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

Działa to, ponieważ pakiet Microsoft.AspNetCore.Mvc zawiera obiekty docelowe dla .NET Framework 4.5.1 i .NET Standard Library 1.6.

Możliwe jest również, aby zbudować dla obu ram z jednego projektu:

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

W tym przypadku należy pamiętać, że zależność Microsoft.NETCore.App zostanie przeniesiony wewnątrz sekcji frameworks. Jest to konieczne, ponieważ ta zależność jest wymagana tylko podczas budowania dla netcoreapp1.0, a nie net461.

+2

ASP.NET Core 2.0 nie będzie w stanie kierować na pełne środowisko .NET ([patrz github] (https://github.com/aspnet/Home/issues/2022)), tylko .NET Core 2.0 –

+5

Aaaaaa i na szczęście , zmienili zdanie ([źródło] (http://www.theregister.co.uk/2017/05/11/microsoft_asp_net_core_2_0/)). –

4

Można wykonać obie - docelową tylko CLR na komputerze, Core CLR lub obie. Aby kierować na pulpit Clr 4.6.1, używaj monikera net461 jako struktury docelowej. Aby kierować do Core Clr, użyj netcoreapp1.0. Możesz ich używać obok siebie, ale czujesz się trochę nieswojo - dlaczego miałbyś to zrobić w przypadku aplikacji?

+1

Dzięki. Niektóre usługi hostingowe obsługują tylko .NET 4.6.1. Dlatego chcę używać Asp.NET Core, ale nadal będę mógł przesłać go do tych usług. –

+1

@AnyName Cóż, pulpit kierowania ASP.Net Core .NET nadal jest rdzeniem Asp.NET Core. Jeśli nie będziesz mieć oddzielnego kodu, co jest celem kompilacji krzyżowej - po prostu cel net4x? Z drugiej strony istnieją dwa "smaki" Asp.NET Core, gdy kierujesz je na "netcoreapp1.0" - może to być aplikacja przenośna lub samodzielna (tzn. Seflcontained). Jeśli Twój dostawca nie obsługuje przenośnych aplikacji .NET Core, utwórz autonomiczną aplikację - jest samodzielna (to znaczy zawiera środowisko wykonawcze), więc nie ma żadnych dodatkowych zależności). – Pawel

+0

Czy to oznacza, że ​​nie mogę wdrożyć aplikacji, jeśli dostawca nie obsługuje .NET Core (niezależnie od docelowego .NET)? Obecnie używam hosta udostępnionego, więc nie ma zbyt wielu opcji. –