Определение Project.json dnx451 vs .dotnet (4.51)

У меня есть In Asp vnext, я могу определить 3 типа времени выполнения

  • dnxCore
  • dnx451
  • DotNet

В Project.json это выглядит так:

"frameworks": { "dotnet": { }, "dnx451": { }, "dnxcore50": { } }^ 

и ui осветляет это

введите описание изображения здесь

Я предполагаю следующее:

dnxCore – это новая. Core Framework.

dotnet – это предыдущая среда выполнения

dnx451: Что отличает при определении «dotnet» или «dnx451» в project.json?

Не должны ли оба выполняться с исполняемой средой выполнения .net?

Также в зависимости от того, какой шаблон проекта я выбираю (vNext ClassLib или vNext Console Lib) по умолчанию содержит тот или иной.

    Отвечая на ваш вопрос по-другому: библиотека должна ориентироваться на среды, которые требуется SDK. Если вам не нужен SDK, используйте netstandard (или до .NET .NET RC2 dotnet ).

    • dnxcore50 DNX SDK, работающий на CoreCLR / CoreFx ( устарел , вместо этого используйте netcoreapp1.0 ).
    • dnx451 DNX SDK, работающий на .Net 4.5.1 (Desktop CLR / Full BCL и FCL) ( устарел , вместо этого используйте net451 ).
    • net46 .Net Framework 4.6 SDK, работающий на настольных ПК CLR / Full BCL и FCL.
    • uap10.0 UWP Windows 10 SDK, работающий на .Net Native / CoreFx.
    • netcoreapp1.0 .NET Core 1.0 SDK работает на CoreCLR / CoreFx.
    • netstandard1.5 (RC2, dotnet before) любой чистый IL-код, который объявляет свои зависимости (библиотеки System.Runtime (основанные) вместо контрактов PCL). Рамочные зависимости доступны для .Net 4.5.x и далее, .NET Core или UWP (библиотека System.Runtime, установленная в разных версиях). Как и в случае с RC2 dotnet , устаревшее использование вместо этого использует netstandard .
    • 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.codes/2015/07/29/targeting-net-core/ по той же теме).

    ps: dotnet / netstandard – это не конкретное время исполнения, это абстракция. Это цель, которая в этом случае даже не указывает время выполнения, а вместо этого говорит: все, что интерпретирует ИЛ, правильно идет. Например, dnxcore5 является целью, которая указывает SDK (DNX), который имеет определенную среду выполнения (CoreCLR). В этом случае вы можете сделать дополнительные предположения относительно поведения во время выполнения (например, использование JIT, доступность реализации x-plat и т. Д.).

    pps: помните, что имя dotnet было преобразовано в термин netstandard с предстоящей версией RC2. Кроме того, полный пакет DNX SDK был разделен между командами .NET Core и ASP.NET. Таким образом, модем для .NET Core (CoreCLR / CoreFx) является netcoreapp1.0 а 99% стека ASP.NET – это просто библиотеки с netstandard1.5 . dnx451 DNX ( dnx451 и dnxcore50 ), где устарели. При запуске ASP.NET Core на .NET Framework (вместо .NET Core) используйте net451 . Тяжелое чтение для деталей: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

    ppps: Не забывайте, что концепция контрактов на основе зависимостей netstandard1.x не была доработана, но была изменена на один (огромный) стандартный контракт (32k APIs, netstandard2.0 ), который должен быть реализован всеми платформами, включая предстоящий .NET. Core 2.0. Это изменение имеет то преимущество, что большая часть существующей экосистемы пакета NuGet (которая ссылается на mscorlib и друзей) может быть интегрирована в пакеты netstandard2.0 с использованием промежуточных прокладок совместимости.

    dotnet нацеливается на совместимость .NET Core 4.6. ссылка ссылки

    «dotnet Это новый .NET Core для пакетов, которые не имеют требований к образцам приложений». – ссылка ссылки

    Таким образом, по этим определениям dotnet является новой средой выполнения, а не предыдущей

    Interesting Posts

    Как найти MAC-адрес удаленного компьютера?

    Область переменной Bash

    Как разместить несколько физических веб-серверов за одним IP-адресом?

    Как вы определяете пространство имен функции?

    Вероятность столкновения SHA1

    Различия в использовании функций «const cv :: Mat &», «cv :: Mat &», «cv :: Mat» или «const cv :: Mat» как параметры функции?

    WPF BackgroundWorker против диспетчера

    Ffmpeg добавить аудио, но сохранить длину видео одинаковой (не-шутка)

    Неправильная настройка Linksys WRT54GL в качестве проводного маршрутизатора с Linsys WRT54GS в качестве точки беспроводного доступа

    Android: Как сделать все элементы внутри LinearLayout того же размера?

    CSS ‘>’ селектор; что это?

    Как очистить учетные данные, связанные с приложением синхронизации OneDrive для бизнеса?

    Как легко и непрерывно контролировать температуру процессора, используя только «датчики» (без виджета gui)?

    Сделать ссылку в двух таблицах Excel, чтобы автоматизировать вычисление

    Как вы одновременно затуманиваете и оживляете?

    Давайте будем гением компьютера.