Подтвердить что ты не робот

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

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

  • dnxCore
  • dnx451
  • DotNet

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

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

а ui - это

enter image description here

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

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

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

dnx451: Чем отличается определение "dotnet" или "dnx451" в project.json?

Не следует ли запускать с запуском исполнения .net?

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

4b9b3361

Ответ 1

Отвечая на ваш вопрос по-другому: библиотека должна ориентироваться на среды, которые требуется SDK. Если для SDK не требуется использовать netstandard (или до .NET Core 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 до) любой чистый 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. Прозвища DNX (dnx451 и dnxcore50), где устарели. При запуске ASP.NET Core на .NET Framework (вместо .NET Core) используйте net451. Heavy read для деталей: 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 с использованием промежуточных прокладок совместимости.

Ответ 2

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

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

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