Share via


Cultuur maken en casetoewijzing in de globalization-invariant-modus

Deze wijziging die fouten veroorzaken, is van invloed op de globalisatie-invariantmodus op twee manieren:

  • Voorheen liet .NET elke cultuur worden gemaakt in de globalization-invariant-modus, zolang de cultuurnaam voldoet aan BCP-47. De invariante cultuurgegevens zijn echter gebruikt in plaats van de echte cultuurgegevens. Vanaf .NET 6 wordt er een uitzondering gegenereerd als u een andere cultuur maakt dan de invariante cultuur in de globalization-invariant-modus.
  • Voorheen ondersteunde globalization-invariant-modus alleen aanvraagtoewijzingen voor ASCII-tekens. Vanaf .NET 6 biedt globalization-invariant-modus volledige ondersteuning voor casetoewijzing voor alle Unicode-gedefinieerde tekens. Casetoewijzing wordt gebruikt in bewerkingen zoals tekenreeksvergelijkingen, zoekopdrachten in tekenreeksen en hoofdletters of kleine hoofdletters.

Globalization-invariant-modus wordt gebruikt voor apps waarvoor geen ondersteuning voor globalisatie is vereist. Dat wil gezegd, de app wordt uitgevoerd zonder toegang tot cultuurspecifieke gegevens en gedrag. Globalization-invariant-modus is standaard ingeschakeld voor sommige Docker-containers, bijvoorbeeld Alpine-containers.

Oud gedrag

In eerdere .NET-versies wanneer de globalization-invariant-modus is ingeschakeld:

  • Als een app een cultuur maakt die niet de invariante cultuur is, slaagt de bewerking, maar gebruikt de geretourneerde cultuur altijd de invariante cultuurgegevens in plaats van de echte cultuurgegevens.

  • Casetoewijzing is alleen uitgevoerd voor ASCII-tekens. Voorbeeld:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to false.
    

Nieuw gedrag

Vanaf .NET 6 wanneer de globalisatie-invariantmodus is ingeschakeld:

  • Als een app probeert een cultuur te maken die niet de invariante cultuur is, wordt er een CultureNotFoundException uitzondering gegenereerd.

  • Casetoewijzing wordt uitgevoerd voor alle Unicode-gedefinieerde tekens. Voorbeeld:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to true.
    

Versie geïntroduceerd

.NET 6

Reden voor wijziging

De wijziging in het creëren van cultuur is geïntroduceerd om problemen met betrekking tot cultuur gemakkelijker vast te stellen. Sommige gebruikers weten niet dat hun apps worden uitgevoerd in een omgeving waarin de globalisatie-invariantmodus is ingeschakeld. Ze kunnen onverwacht gedrag ondervinden en de koppeling met de globalization-invariant-modus niet maken, dus het is moeilijk om het probleem te diagnosticeren.

De volledige ondersteuning voor casetoewijzing is geïntroduceerd voor betere bruikbaarheid en ervaring in de globalization-invariant-modus.

In de meeste gevallen is er geen actie nodig. Als u echter het vorige gedrag voor het maken van cultuur wenst, kunt u een runtimeconfiguratieoptie instellen om het maken van een cultuur in de globalization-invariant-modus mogelijk te maken. Zie Vooraf gedefinieerde culturen voor meer informatie.

Betrokken API's

Zie ook