Каковы правила управления версиями .NET Standard?

.NET Standard предписывает API, который должны реализовывать все платформы .NET. . Каковы его правила управления версиями? Является ли это breaking.adding, в котором 1.4 дополняет и остается обратно совместимым с 1.3, тогда как 2.x не имеет обратной совместимости с 1.x?

В документации по этому поводу нет ясности. Некоторые документы Microsoft указывают на чистую обратную совместимость:

Учитывая версию стандартной библиотеки .NET, вы можете использовать библиотеки, предназначенные для этой же или более ранней версии. (выделение добавлено)

Теперь, когда вышла версия 2.0, приведенное выше не кажется правильным. При этом выпуск в блоге сказал:

Из библиотеки, ориентированной на .NET Standard, вы сможете ссылаться на [библиотеки, нацеленные на] .NET Standard, если их версия ниже или равна версии, на которую вы ориентируетесь. (выделение добавлено)

Тот же пост в блоге противоречил сам себе, говоря:

Чтобы позволить .NET Framework 4.6.1 поддерживать .NET Standard 2.0, нам пришлось удалить все API из .NET Standard, которые были представлены в .NET Standard 1.5 и 1.6.

Теперь, когда 2.0 вышла, каковы правила управления версиями? Похоже, это breaking.adding. Где это зафиксировано в MSFT?


person Shaun Luttin    schedule 11.10.2016    source источник


Ответы (1)


Я объяснил это более подробно в нашем Эпизод о .NET Standard.

Как правило, .NET Standard работает следующим образом:

  1. .NET Standard будет выпускаться линейно, чтобы не вносить критических изменений между версиями. Другими словами, вы можете думать о поверхности API .NET Standard как о концентрических кругах, где более высокие версии имеют больше API.
  2. Определенная версия платформы .NET будет реализовывать конкретную версию .NET Standard.
  3. When choosing a .NET Standard version to target consider this trade-off:
    • The higher the version number, the more APIs you can use
    • Чем меньше номер версии, тем больше платформ .NET поддерживает его.

Так почему же говорят о критических изменениях? Короткий ответ: мы допустили ошибку при определении .NET Standard 1.x и не приняли во внимание охват платформы. Вам следует игнорировать .NET Standard 1.5 и 1.6 и избегать зависимости от них. Если вы это сделаете, .NET Standard 2.0 станет строгим надмножеством .NET Standard 1.4.

Дополнительные сведения см. В разделе Критическое изменение .NET Standard 2.0: добавление совместимости с .NET Framework 4.6.1 в мое сообщение в блоге о .NET Standard.

Обновить. После множества отзывов сообщества мы решили не вносить это критическое изменение. Более подробная информация об этом решении приведена в часто задаваемые вопросы по .NET Standard.

person Immo Landwerth    schedule 11.10.2016