.NET Standard и .NET Core 3.x или ASP.NET Core 3.x

У меня есть несколько вопросов по.NET Standard и недавно анонсированным.NET Core 3.0 и ASP.NET Core 3.1.

Предыдущие версии .NET Standard имели ту же основную версию, что и выпускаемое ядро ​​.NET, но для.NET Core 3.1 совместимой является.NET Standard 2.1.

  1. .NET Standard постепенно устаревает или это всего лишь номер версии, не имеющей отношения к выпуску.NET Core?
  2. Можно ли предположить, что.NET Standard 2.1 также будет совместим с ASP.NET Core 3.1?
  3. Если мы перенесем существующие веб-приложения и веб-API MVC в asp.net core 3.1, то что произойдет с существующими библиотеками стандартных классов.net, которые использовались веб-приложением?

Изменим ли мы целевую структуру для наших старых библиотек классов.NET Standard с:

<TargetFramework>netstandard2.0</TargetFramework>

Чтобы

<TargetFramework>netstandard2.1</TargetFramework>

Или изменить на

<TargetFramework>netcoreapp3.0</TargetFramework> 

и добавьте FrameworkReference в Microsoft.AspNetCore.App

1 ответ

Решение
  1. Номер версии.NET Standard не меняется вместе с.NET Core, любые предыдущие совпадения были случайными. Выпуск.NET Standard работает медленнее, но при переходе с.NET Core включает больше API, поэтому в этом смысле он не устаревает.

Кроме того,.NET Standard станет менее актуальным в будущем, когда выйдет.NET 5 и объединит платформу, и теперь, когда многоцелевое управление работает так хорошо, он по-прежнему будет актуален в течение следующего года и будет актуален для работы с поверхностями API старые фреймворки.

  1. ASP.NET Core 3.0 совместим с.NET Standard 2.1, поэтому ASP.NET Core 3.1 также будет. (Используемая вами фазировка предполагает, что у вас есть обратная связь)

  2. Вы можете по-прежнему ссылаться на библиотеки.NET Standard 2.0 из фреймворков, которые его поддерживают и выше, поэтому вы все равно сможете использовать его в ASP.NET Core 3.1, когда он станет доступен.

Для вашего последнего вопроса это зависит:)

Если вы имеете дело с не веб-библиотекой, тогда netstandard2.1 подойдет (хотя и не обязательно, можно оставить 2.0).

Если у вас есть проект ASP.NET Core или связанный проект веб-библиотеки, вы, вероятно, захотите перейти на netcoreapp3.0.

Для пояснения моего последнего пункта вы не найдете лучшего объяснения, чем от Эндрю Локка здесь: https://andrewlock.net/converting-a-netstandard-2-library-to-netcore-3/

Официальное руководство по обновлению можно найти здесь

Другие вопросы по тегам