Ответ 1
Есть прекрасная серия статей об этом, которая помогла мне решить мои вопросы...
https://oren.codes/2015/06/16/demystifying-pcls-net-core-dnx-and-uwp-redux/ https://oren.codes/2015/07/29/targeting-net-core/
.Net Core имеет все свои библиотеки (например, System.IO) в отдельных пакетах NuGet (каждый из них доступен для SDK DNX, UWP и .Net 4.6). Сторонние библиотеки нацелены на dnxcore50
(DNX) или uap10.0
(UWP), если они получают доступ к платформе изначально или полагаются на свои функции. Если они не получают доступ к платформе, а полагаются только на другие пакеты, они должны нацеливаться на dotnet
.
dotnet
Эффективно означает: я совместим с любой платформой, которая удовлетворяет моим зависимостям (ваша библиотека XYZ "dotnet", которая использует System.Reflection dnxcore5+net45
, не может использоваться приложением UWP uap10.0
). Это эффективно заканчивает комбинаторный кошмар платформ. Предыдущая целевая комбинация dnxcore5+net45
создала пересечение между библиотеками платформ, и каждое добавление сделало бы ситуацию еще хуже. dotnet
с другой стороны не ограничивает библиотеку цели, а вместо этого направляет это ограничение на свои зависимости (где внезапно появятся новые ограничения, такие как знаменитая платформа unicorn
).
Поэтому в качестве автора библиотеки вы можете настроить таргетинг dotnet
, если вам нужны только другие библиотеки.
Отвечая на ваш вопрос:
- Ваш PCL совместим с средами типа Net Core, такими как DNX и UWP, если вы добавите целевые
dotnet
,dnxcore50
илиuap10.0
в зависимости от потребности в вашей библиотеке (см. статью Owen для той же базовой совместимости с контракт 259). - .Net Core - это нечто большее, чем набор библиотек PCLed. Это новая среда CLR, новая организованная структура (упакованная в небольшие части) и инфраструктура для новых .Net SDK (DNX, UWP и т.д.). Термин ".Net Core" предназначен как для библиотеки базового класса "CoreFx", так и для CLR "CoreCLR". Но настоящие платформы на самом деле являются DNX (командой ASP.Net) и UWP (командой Windows).
Весь этот ответ - мое текущее понимание .Net Core. Это незавершенная работа и, как упоминалось в сообщениях, еще не опубликована.
ПРИМЕЧАНИЕ DEC 2016: Помните, dotnet
, поскольку предшественник netstandard1.x
изменился в своей концепции, начиная с netstandard2.x
(.NET Core 2.0; ~ JUN 2017). Начиная с netstandard2.0
будет существовать один общий контракт (netstandard.dll), который реализуется всеми платформами (.NET Core,.NET Framework, Xamarin, Mono, Unity3D). Этот контракт будет расширяться со временем, и платформа должна либо отказаться от поддержки новейшего стандарта, либо выбросить NotImplementedException, либо реализовать его.