J'ai entendu dire que ASP.NET Core peut cibler .NET Framework 4.6.1. Cela signifie-t-il qu'il ne peut utiliser que .NET 4.6.1, ou qu'il peut utiliser .NET 4.6.1 en même temps que .NET Core ?
Réponses
Trop de publicités?Vous pouvez exécuter ASP.NET Core au-dessus de .NET Core 1.0 ou de .NET Framework 4.5.1+. Puisque "ASP.NET Core" n'est en fait qu'un ensemble de paquets NuGet, vous pouvez les installer dans un projet ciblant l'un ou l'autre des cadres.
Par exemple, un projet .NET Core ressemblerait à ceci :
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"frameworks": {
"netcoreapp1.0": { }
}
Alors qu'un projet .NET Framework ressemblerait (dans le cas de .NET 4.6.1) :
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0"
},
"frameworks": {
"net461": { }
}
Cela fonctionne parce que le Microsoft.AspNetCore.Mvc contient des cibles pour .NET Framework 4.5.1 et .NET Standard Library 1.6.
Il est également possible de construire pour les deux frameworks à partir d'un seul projet :
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
},
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
}
Dans ce cas, notez que le Microsoft.NETCore.App
la dépendance est déplacée à l'intérieur de de la frameworks
section. Ceci est nécessaire parce que cette dépendance n'est nécessaire que lors de la construction pour netcoreapp1.0
pas net461
.
Vous pouvez faire les deux, c'est-à-dire cibler uniquement le CLR de bureau, le CLR principal ou les deux. Pour cibler le CLR de bureau 4.6.1, utilisez la commande net461
comme cadre cible. Pour cibler Core Clr, utilisez netcoreapp1.0
. Vous pouvez les utiliser côte à côte, mais c'est un peu gênant - pourquoi feriez-vous cela dans le cas des applications ?