Partager via


Les URI de partie de package sont désormais comparées de manière insensible à la casse dans System.IO.Packaging

Auparavant, les noms de parties et les substitutions qui différaient uniquement par le cas ASCII (par exemple, /part vs /PART) n’étaient pas considérés comme équivalents dans System.IO.Packaging, même si la spécification OPC (Open Packaging Conventions) nécessite une équivalence insensible à la casse (§7.2.3.5, ECMA-376). Cette modification corrige le bogue et met .NET 5 à 9 en ligne avec .NET Framework et la spécification OPC.

Version introduite

.NET 8

Comportement précédent

Les URI étaient comparées en tenant compte de la casse. Les remplacements de type de contenu ont échoué si la casse différait entre l’URI de la partie et l’entrée de remplacement. Certains packages non conformes contenant des entrées en double diffèrent uniquement dans le cas (par exemple, /part et /PART) peuvent être chargés, ce qui entraîne des résultats ambigus.

Nouveau comportement

Les comparaisons d’URI sont insensibles à la casse (StringComparison.OrdinalIgnoreCase). Les remplacements avec une casse différente fonctionnent désormais comme prévu. Les packages non conformes contenant plusieurs entrées qui diffèrent uniquement par cas sont désormais rejetés lors de l’ouverture. Cela s’aligne sur .NET Framework et la spécification OPC.

Type de changement cassant

Il s’agit d’un changement comportemental.

Raison de la modification

Cette modification aligne le System.IO.Packaging comportement avec :

  • La spécification OPC (équivalence d’URI non sensible à la casse est obligatoire).
  • Comportement existant du .NET Framework, qui applique déjà la correspondance insensible à la casse.

Il empêche les recherches ambiguës et garantit des résultats cohérents et corrige dotnet/runtime#112783.

Assurez-vous que les packages OPC ne contiennent pas de noms de composants différents uniquement par cas, car cela n’est pas valide conformément à la spécification OPC.

Si vous consommez des packages qui ne respectent pas la spécification :

  • Contactez l’auteur du package pour corriger le package.
  • Si vous avez besoin de lire ou d’inspecter le contenu, vous pouvez ouvrir le package en tant qu’archive ZIP. Contrairement à l’API package, les archives ZIP n’appliquent pas de règles OPC et vous permettent d’accéder à toutes les entrées, y compris celles avec des noms de cas en conflit.

API affectées