Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

В чем разница между NetFramework и NetCore

#c_sharp #.net #uwp


При попытке подключить библиотеку к uwp приложению получил вот такое предупреждение:
"Проект предназначен для ".NetCore", в то время как ссылка файла предназначена для
".NetFramework""

Вроде, и то платформа, и то платформа, так в чем разница, зачем их две и возможна
ли связь между ними (подключать одно к другому и наоборот)?
    


Ответы

Ответ 1



.NET Framework - это старая платформа, работающая только под Windows. .NET Core - это новая платформа, которая может работать как под Windows, так и под Linux. Но она еще довольно "сырая" - множество инструментов еще не перенесены на нее. Подключить одно к другому не получится, потому что у них разные системные библиотеки (а также разные системы сборки если вы используете Visual Studio версии 2015 или ниже). Кроме них, есть еще платформы: Mono - может работать как под Windows, так и под Linux. Пытается быть совместимой с .NET Framework. UWP - платформа для написания Windows-приложений, использующих WinRT. Не знаю про совместимость с .NET Framework. Silverlight - старая платформа (застряла примерно на уровне .NET 4.5), предназначенная для работы в браузере (вроде java-апплетов). Не так давно была серьезно ранена гуглом, который перестал поддерживать NPAPI в своем Хроме. Не совместима с .NET Framework. .NET Compart Framework - несовместимая вариация .NET Framework для Windows CE. Сейчас находится на той же свалке, куда был выброшен Windows CE. Unity - форк Mono, платформа для написания графических (в том числе 3D) приложений. Есть вариант встраивания в браузер (не работает в Хроме из-за отказа от NPAPI в Хроме работает благодаря технологии Web Assembly). PCL (Portable Class Library) - общее подмножество разных версий .NET Framework, UWP и Silverlight. Совместима с ними в одну сторону (PCL-библиотеку можно использовать на перечисленных платформах). .NET Standard - новая реинкарнация PCL. От PCL отличается подходом к версионированию: если для PCL разработчик библиотеки выбирает список поддерживаемых платформ, то для .NET Standard выбирается версия стандарта (а для платформ известно какие версии ими поддерживаются).

Ответ 2



Если посмотреть какие версии NetStandard поддерживает UWP https://habrahabr.ru/post/312026/ То увидим, что это 1.4. Текущая максимальная версия 1.6 https://msdn.microsoft.com/ru-ru/magazine/mt590967.aspx Наконец, .NET Core — это нижележащая инфраструктура, от которой зависит .NET Native. Когда проектировали .NET Native, стало понятно, что .NET Framework не подойдет в качестве фундамента для библиотек классов этой инфраструктуры. Дело в том, что .NET Native статически связывает инфраструктуру с приложением, а затем удаляет все лишнее, что не нужно приложению. (Здесь я сильно упрощаю общую картину, но идею вы уловили. Подробнее на эту тему см. «Inside .NET Native» по ссылке bit.ly/1UR7ChW.) Традиционная реализация .NET Framework не предусматривает разбиения на модули, поэтому компоновщик (linker) не может включить в приложение лишь ту часть инфраструктуры, которая нужна приложению. Но .NET Core, по сути, является ответвлением .NET Framework, реализация которой оптимизирована с учетом модульности. Другое преимущество этой реализации — возможность поставлять .NET Core Framework как набор NuGet-пакетов, что позволяет вам обновлять индивидуальные классы вне самой .NET Framework. Однако, прежде чем двигаться дальше, давайте обсудим изменения в NuGet. ПО UWP ориентировано на .Net Core, поэтому не совместимо с библиотеками .NET Framework

Комментариев нет:

Отправить комментарий