Я слышал, что ASP.NET Core может ориентироваться на .NET Framework 4.6.1. Означает ли это, что он может использовать только .NET 4.6.1, или он может использовать .NET 4.6.1 вместе с .NET Core?
Можно ли использовать ASP.NET Core для таргетинга только .NET 4.6.1?
Ответ 1
Вы можете запустить ASP.NET Core поверх .NET Core 1.0 или .NET Framework 4.5.1+. Поскольку "ASP.NET Core" - это действительно набор пакетов NuGet, вы можете установить их в проект, ориентированный на любую фреймворк.
Например, проект .NET Core будет выглядеть следующим образом:
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"frameworks": {
"netcoreapp1.0": { }
}
В то время как проект .NET Framework будет выглядеть (в случае .NET 4.6.1):
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0"
},
"frameworks": {
"net461": { }
}
Это работает, потому что в пакете Microsoft.AspNetCore.Mvc есть цели как для .NET Framework 4.5.1, так и для .NET Standard Library 1.6.
Также возможно создать для обеих фреймворков один проект:
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
},
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
}
В этом случае обратите внимание, что зависимость Microsoft.NETCore.App
перемещается внутри раздела frameworks
. Это необходимо, потому что эта зависимость нужна только при построении для netcoreapp1.0
, а не net461
.
Ответ 2
Вы можете сделать то и другое - то есть целевые только для CLR для ПК, Core CLR или для обоих. Чтобы настроить таргетинг на рабочий стол Clr 4.6.1, используйте net461
прозвище в качестве целевой среды. Чтобы настроить Core Clr, используйте netcoreapp1.0
. Вы можете использовать их бок о бок, но это немного неудобно - зачем вы это делаете даже в случае приложений?