2016-10-11 3 views
4

.NET Standard prescrit une API que toutes les plates-formes .NET doivent mettre en œuvre. Quelles sont ses règles de versionnement? Est-ce breaking.adding, dans lequel 1.4 ajoute à et reste rétrocompatible avec 1.3 alors que 2.x n'est pas rétrocompatible avec 1.x?Quelles sont les règles de version standard .NET?

La documentation est pas clair à ce sujet. Some Microsoft docs indiquent pur rétrocompatibilité:

Étant donné une version Standard Library .NET, vous pouvez utiliser les bibliothèques qui ciblent cette version même ou moins. (emphase ajoutée)

Maintenant que 2.0 est sorti, ce qui précède ne semble pas correct. Cela étant dit, the release blog post dit:

A partir d'une bibliothèque de ciblage standards .NET, vous serez en mesure de référence [bibliothèques ciblant] .NET standard, si leur version est inférieure ou égale à la version que vous ciblez . (italique ajouté)

Ce même poste de blog lui-même contredit en disant:

Afin de permettre .NET Framework 4.6.1 pour soutenir la norme .NET 2.0, nous avons dû supprimer toutes les API à partir de .NET Standard qui ont été introduites dans .NET Standard 1.5 et 1.6.

Maintenant que la version 2.0 est sortie, quelles sont les règles de version? Il semble être breaking.adding. Où MSFT a-t-il documenté cela?

Répondre

6

Je l'ai expliqué cela dans un peu plus en détail dans notre On.NET episode on .NET Standard.

En général, voici comment fonctionne la norme .NET:

  1. standard .NET Version linéaire, avec l'intention de ne pas faire casser les changements entre les versions. En d'autres termes, vous pouvez considérer la surface API de .NET Standard comme des cercles concentriques, où les versions supérieures ont plus d'API.
  2. Une version spécifique d'une plate-forme .NET mettra en œuvre une version spécifique de la norme .NET.
  3. Lors du choix d'une version standard .NET pour cibler considérer ce compromis:
    • Plus le numéro de version, plus API vous pouvez utiliser
    • Plus le numéro de version, le support plus de plates-formes .NET il

Alors pourquoi est-il parler de cette rupture des changements? La réponse courte est parce que nous avons fait une erreur lors de la définition de .NET Standard 1.x et n'a pas pris en compte la portée de la plate-forme. Vous devriez ignorer .NET Standard 1.5 et 1.6 et éviter de prendre une dépendance sur eux. Si vous faites cela, .NET Standard 2.0 est un sur-ensemble strict de .NET Standard 1.4.

Pour plus de détails, lisez la section standard .NET 2.0 rupture de changement: l'ajout de compatibilité .NET Framework 4.6.1 en my blog post on .NET Standard.

Mettre à jour. Après beaucoup de commentaires de la communauté, nous avons décidé de ne pas effectuer ce changement de rupture. Plus de détails autour de cette décision est répertorié dans le .NET Standard FAQ.