Udostępnij przez


Identyfikatory URI części pakietu są teraz porównywane bez uwzględniania wielkości liter w ramach System.IO.Packaging

Wcześniej nazwy części i przesłonięcia różniące się tylko wielkością liter ASCII (na przykład /part vs /PART) nie były uważane za równoważne w System.IO.Packaging, mimo że specyfikacja Open Packaging Conventions (OPC) wymaga równoważności nieuwzględniającej wielkości liter (§7.2.3.5, ECMA-376). Ta zmiana naprawia usterkę i wprowadza platformę .NET 5–9 zgodnie ze specyfikacją .NET Framework i OPC.

Wersja wprowadzona

.NET 8

Poprzednie zachowanie

W porównaniach identyfikatorów URI była uwzględniana wielkość liter. Przesłonięcia typu zawartości nie powiodły się, jeśli wielkość liter różni się między identyfikatorem URI części a wpisem zastąpienia. Niektóre niezgodne pakiety zawierające zduplikowane wpisy różnią się tylko w przypadku (na przykład /part i /PART) mogą zostać załadowane, co prowadzi do niejednoznacznych wyników.

Nowe zachowanie

Porównania identyfikatorów URI są bez uwzględniania wielkości liter (StringComparison.OrdinalIgnoreCase). Przesłonięcia z różnymi wielkościami działają teraz zgodnie z oczekiwaniami. Niezgodne pakiety zawierające wiele wpisów, które różnią się tylko wielkością liter, są teraz odrzucane przy otwieraniu. Jest to zgodne ze specyfikacją platformy .NET Framework i specyfikacją OPC.

Typ zmiany przełamującej

Jest to zmiana behawioralna.

Przyczyna zmiany

Zmiana ta dostosowuje zachowanie System.IO.Packaging do:

  • Specyfikacja OPC (równoważność identyfikatora URI bez uwzględniania wielkości liter jest obowiązkowa).
  • Istniejące zachowanie programu .NET Framework, które już wymusza dopasowywanie bez uwzględniania wielkości liter.

Zapobiega niejednoznacznym wyszukiwaniom i zapewnia spójne wyniki, i w ten sposób naprawia dotnet/runtime#112783.

Upewnij się, że pakiety OPC nie zawierają nazw części różniących się tylko wielkością liter, ponieważ jest to nieprawidłowe zgodnie ze specyfikacją OPC.

W przypadku korzystania z pakietów naruszających specyfikację:

  • Skontaktuj się z autorem pakietu, aby naprawić pakiet.
  • Jeśli musisz odczytać lub sprawdzić zawartość, możesz otworzyć pakiet jako archiwum ZIP. W przeciwieństwie do interfejsu API pakietu, archiwa ZIP nie przestrzegają reguł OPC i zapewniają dostęp do wszystkich elementów, w tym tych z konfliktowymi nazwami różniącymi się wielkością liter.

Interfejsy API, których dotyczy problem