Share via


Skapa kultur och skiftlägesmappning i globaliseringsvariant läge

Den här icke-bakåtkompatibla ändringen påverkar globaliseringsläget på två sätt:

  • Tidigare tillät .NET att alla kulturer skapades i globaliseringsvariant läge, så länge kulturnamnet överensstämde med BCP-47. De invarianta kulturdata användes dock i stället för verkliga kulturdata. Från och med .NET 6 utlöses ett undantag om du skapar någon annan kultur än den invarianta kulturen i globaliserings-invariant-läge.
  • Tidigare stödde endast globaliserings-invariant-läge skiftlägesmappning för ASCII-tecken. Från och med .NET 6 ger globaliserings-invariant-läge fullständigt stöd för skiftlägesmappning för alla Unicode-definierade tecken. Skiftlägesmappning används i åtgärder som strängjämförelser, strängsökningar och övre eller nedre höljesträngar.

Globaliserings-invariant-läge används för appar som inte kräver något globaliseringsstöd. Det vill sa att appen körs utan åtkomst till kulturspecifika data och beteende. Globaliserings-invariant-läge är aktiverat som standard på vissa Docker-containrar, till exempel Alpine-containrar.

Gammalt beteende

I tidigare .NET-versioner när globaliserings-invariant-läge är aktiverat:

  • Om en app skapar en kultur som inte är den invarianta kulturen lyckas åtgärden, men den returnerade kulturen använder alltid invarianta kulturdata i stället för verkliga kulturdata.

  • Ärendemappning utfördes endast för ASCII-tecken. Till exempel:

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

Nytt beteende

Startar i .NET 6 när globaliserings-invariant-läge är aktiverat:

  • Om en app försöker skapa en kultur som inte är den invarianta kulturen genereras ett CultureNotFoundException undantag.

  • Skiftlägesmappning utförs för alla Unicode-definierade tecken. Till exempel:

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

Version introducerad

.NET 6

Orsak till ändringen

Ändringen av kulturskapandet infördes för att enklare diagnostisera kulturrelaterade problem. Vissa användare är omedvetna om att deras appar körs i en miljö där globaliseringsvariantläge är aktiverat. De kan uppleva oväntat beteende och inte göra associationen med globaliseringsvariant läge, så det är svårt att diagnostisera problemet.

Det fullständiga stöd för ärendemappning introducerades för bättre användbarhet och bättre upplevelse i globaliserings-invariant-läge.

I de flesta fall behövs ingen åtgärd. Men om du vill ha det tidigare beteendet för kulturskapande kan du ange ett körningskonfigurationsalternativ för att tillåta skapande av valfri kultur i globaliseringsvariant läge. Mer information finns i Fördefinierade kulturer.

Berörda API:er

Se även