Таким образом, когда мы создаем кроссплатформенную (например, используемую в системах Linux) библиотеку классов в VS2017, у нас есть два варианта: один нацелен на .NET Core
, другой нацелен на .NET Standard
.
Хотя .NET Core
и .NET Standard
существуют уже несколько лет, они по-прежнему сбивают с толку большинство из нас.К счастью, у нас есть много ссылок для чтения в Интернете.Вы можете зайти в Google или просто найти ответы с наибольшим количеством голосов в Stackoverflow.
Я хотел бы поделиться своим опытом по изучению этого.Я полностью понимаю это только после того, как начал писать приложения .NET Core в своей системе Ubuntu.
.NET Core
о том, что приложение может работать на нескольких платформах , так что у вас есть консольное приложение .NET Core или приложение ASP.NET Core, вы можете запустить приложение с одной и той же командой " dotnet run " в Windows или Ubuntu без необходимости изменять одну строкукода.
. В настоящее время .NET Core поддерживает только два типа проектов: Console и ASP.NET Core.UWP по-прежнему строго только для Windows, вы не можете написать приложение UWP и ожидать, что оно будет работать на других ОС, кроме Windows.
С другой стороны, .NET Standard - это разделение кода библиотеки классов между различными приложениями .NET - Windows Forms, WPF, UWP, Mono, ASP.NET Core и т. Д.это тип проекта. Потому что все они должны реализовать какую-то версию .NET Standard.Это означает, что если библиотека скомпилирована для действительно низкой версии .NET Standard (например, 1.0), то на библиотеку могут ссылаться все, да, даже WinForms (.NET Platform 4.5 или выше).
Итак, давайте вернемся к вопросу: если вы скомпилируете библиотеку классов для целевой платформы .NET Core, то она может использоваться только приложением .NET Core, приложение UWP не может ссылаться на нее, потому что UWP не является кроссплатформенным (UWP работает только на нескольких экранах и работает на разных устройствах Windows 10 с различными размерами экрана;))
Обновление через месяц : когда я писал этот ответ, я никогда не слышал о MSпланируем выпустить .NET Core 3.0 в 2019 году - они добавят поддержку WinForms
и WPF
в следующую основную версию .NET Core, что означает мою точку # 1 .NETСуть в том, что приложение кроссплатформенное будет несколько вводить в заблуждение.