Мастер создания новых проектов Visual Studio: .NET Core и стандартная библиотека .NET?

В мастере создания новых проектов в Visual Studio 2017 я вижу как возможность создать новую библиотеку .NET Standard, так и новую библиотеку .NET Core. Я понимаю, что .NET Standard — это спецификация, а .NET Core — это кросс-платформенная реализация этой спецификации.

Но может ли кто-нибудь объяснить реальные различия при создании библиотек каждым из следующих способов? Что еще хуже, если вы внимательно посмотрите, оба диалоговых окна также имеют раскрывающийся список вверху с надписью «.NET Framework 4.6.2» :( - что с этим делать?

Стандартная библиотека .NET

Стандартный

Базовая библиотека .NET

Ядро

Примечание: соглашение об именах сбивает с толку. «.NET 5» звучит проще


person DeepSpace101    schedule 14.03.2017    source источник
comment
Соглашение об именах связано с тем, что, начиная с 4, они начали использовать семантическое управление версиями. Они не перейдут на .NET 5 до они вносят изменения в структуру, из-за которых она не будет обратно совместима с материалами, разработанными для 4.x. В этом суть системы нумерации: если вы используете версию 4.x, которая больше или равна версии, для которой вы написали свой код, вы знаете, что ваш код будет скомпилирован без каких-либо изменений. Если вы попытаетесь скомпилировать свой код на 5.x, вы знаете, что вам нужно проверить совместимость.   -  person Scott Chamberlain    schedule 14.03.2017
comment
Но они отбросили эту мысль, назвав его .net core 2.0 :( blogs.msdn.microsoft.com/dotnet/2016/09/26/   -  person DeepSpace101    schedule 14.03.2017
comment
Мы говорим о платформе .NET, а не о версиях ядра .net.   -  person Scott Chamberlain    schedule 14.03.2017
comment
Помните шаблоны проектов библиотеки PCL? Предыдущее решение для создания кроссплатформенных библиотек. Это устарело для .NETCore, слишком сильно страдая от n! проблема, замененная на .NETStandard. Сетка совместимости здесь. Имейте в виду, что это работа в процессе, 2.0 потребуется некоторое время, чтобы появиться.   -  person Hans Passant    schedule 14.03.2017


Ответы (2)


Верхний раскрывающийся список («.NET Framework 4.6.2») ничего не делает, если вы хотите создать проект .NET Core или .NET Standard.

(Возможно, соответствующий разговор: https://twitter.com/bradwilson/status/836434975985577984)

person Tóth Tibor    schedule 14.03.2017
comment
Об этой ошибке также сообщалось, но команда VS не считает это ошибкой (не исправит) developercommunity.visualstudio.com/content/problem/13206/ - person DeepSpace101; 15.03.2017

Используя эту диаграмму

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

Если вы создаете библиотеку .NET Core, ваша библиотека может использоваться только объектами из синего раздела и только объектами из синего или красного разделов. Если вы создаете библиотеку .NET Standard, ваша библиотека может использоваться объектами из зеленого, синего, оранжевого и красного разделов, но использовать объекты только из красного раздела.

Причина, по которой вы можете захотеть использовать Core Library вместо стандартной библиотеки, заключается в том, что у вас есть потенциальный доступ к большему количеству функций и библиотек для вызова из вашего кода, если вы знаете, что ориентируетесь только на Core. Вам не нужно ограничивать область использования общедоступного API вещами, которые разрешены во всех 4 разделах.

person Scott Chamberlain    schedule 14.03.2017
comment
То есть стандартная библиотека (красная) не обязательно кроссплатформенная? - person DeepSpace101; 14.03.2017
comment
Если вы создаете DLL, ориентированную на netstandard1.0 для <FrameworkTarget> в .csproj, эту DLL можно использовать на любой платформе, поддерживающей 1.0 или новее. Если вы создадите DLL, ориентированную на netcoreapp1.0, вы сможете использовать ее только в проектах, также ориентированных на netcoreapp1.0. - person Scott Chamberlain; 14.03.2017