Проект.определение JSON dnx451 против dotnet (4.51)
У меня есть некоторые В asp vnext я могу определить 3 типа времени выполнения
- dnxCore
- dnx451
- dotnet
В Проект.json это выглядит так:
"frameworks":
{
"dotnet": { },
"dnx451": { },
"dnxcore50": { }
}^
и ui shors это
Я предполагаю следующее:
dnxCore новый .чистый фреймворк.
dotnet предыдущая время работы
dnx451: Что отличается при определении "dotnet" или "dnx451" в проекте.в JSON?
Не Должны ли оба работать со средой выполнения .net?
также в зависимости от того, какой шаблон проекта Я выбираю ( vNext ClassLib или vNext Console Lib) по умолчанию содержит один или другой.
2 ответа:
отвечая на ваш вопрос по-другому: библиотека должна ориентироваться на среды, которые SDK ее требует. Если вам не требуется SDK использовать
netstandard(или до .NET Core RC2dotnet).
dnxcore50DNX SDK работает на CoreCLR / CoreFx (устаревший используйте ).dnx451DNX SDK работает на .Net 4.5.1 (Desktop CLR / Full BCL и FCL) (устаревший используйтеnet451вместо).net46.Чистая Framework 4.6 SDK работает на настольных CLR / Full BCL и FCL.uap10.0UWP Windows 10 SDK работает на .Net Native / CoreFx.netcoreapp1.0.NET Core 1.0 SDK работает на CoreCLR / CoreFx.netstandard1.5(RC2,dotnetbefore) любой чистый код IL, который объявляет свои зависимости (System.Библиотеки времени выполнения (на основе) вместо контрактов PCL). Зависимости платформы доступны для .Net 4.5.x и далее, .NET Core или UWP (System.Набор библиотек на основе среды выполнения в различные варианты.) Как и с RC2dotnetустарело, используйте .netstandard2.0(.NET Core 2.0; ~JUN 2017) любой чистый код IL, который полагается исключительно на набор функцийnetstandard.dllкоторые все платформы (.NET Core, .NET Framework, Xamarin, Mono, Unity3D) должны реализовать (или бросить NotImplementedException). Элементnetstandard2.xэто примерно библиотека BCL платформы .NET Framework (без компонентов FCL, таких как WMI, WinForms, WPF, WCF, WWF,...). По совместимости прокладок, большинство существующих Пакеты NuGet будут автоматическиnetstandard2.0.поэтому, если ваша библиотека имеет только некоторые алгоритмы или не специфична для платформы, используйте
netstandard/dotnet. Если какая-либо из ваших зависимостей ограничена, эта зависимость будет распространяться до приложения (например, DNX, UWP,. Net46), которое ее использует.я могу только выделить как Малахия серию статей Орена. (он только что написал новый:https://oren.коды/2015/07/29/таргетинг-net-core/ на же тема.)
ps:
dotnet/netstandardне является конкретным временем выполнения это абстракция его. Это цель, которая в этом случае даже не указывает время выполнения, а вместо этого говорит: Все, что правильно интерпретирует IL, идет. Напримерdnxcore5является целью, которая определяет SDK (DNX), который имеет определенную среду выполнения (CoreCLR). В этом случае вы можете сделать дальнейшие предположения о поведении среды выполнения (например, использование JIT, доступность реализации x-plat, так далее.).pps: имейте в виду, что
dotnetимя было преобразовано в терминnetstandardс предстоящим выпуском RC2. Также полный DNX SDK был разделен между .NET Core и ASP.NET команды. Таким образом, в рамках прозвище .Чистая ядра (CoreCLR/CoreFx) составляетnetcoreapp1.0пока 99% из ASP.NET стек-это просто библиотеки сnetstandard1.5. Прозвища DNX (dnx451иdnxcore50), где осуждается. При запуске ASP.NET ядро на платформе .NET Framework (вместо .NET Core) используйтеnet451. Тяжелый прочитайте для деталей: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.mdppps: постоянно осознавайте, что
netstandard1.xконцепция контрактов на основе зависимостей не получила дальнейшего развития, но была изменена на один (огромный) стандартный контракт (32k API;netstandard2.0), который должен быть реализован на всех платформах, включая предстоящий .NET Core 2.0. Это изменение имеет то преимущество, что большая часть существующей экосистемы NuGet пакет (который ссылаетсяmscorlibи друзья) могут быть интегрированы вnetstandard2.0пакеты с помощью промежуточных прокладок совместимости.