Kulturerstellung und Zuordnung von Groß-/Kleinbuchstaben im globalisierungsinvarianten Modus

Dieser Breaking Change wirkt sich in zweierlei Hinsicht auf den globalisierungsinvarianten Modus aus:

  • Bisher war es in .NET möglich, im globalisierungsinvarianten Modus eine Kultur zu erstellen, sofern der Name der Kultur mit BCP-47 konform war. Die Daten der invarianten Kultur wurden jedoch anstatt der realen Kulturdaten verwendet. Ab .NET 6 wird eine Ausnahme ausgelöst, wenn Sie eine andere Kultur als die invariante Kultur im globalisierungsinvarianten Modus erstellen.
  • Zuvor wurden im globalisierungsinvarianten Modus nur Zuordnungen von Groß-/Kleinbuchstaben für ASCII-Zeichen unterstützt. Ab .NET 6 bietet der globalisierungsinvariante Modus vollständige Unterstützung für Zuordnungen von Groß-/Kleinbuchstaben für alle Unicode-definierten Zeichen. Die Zuordnung von Groß-/Kleinbuchstaben wird bei Vorgängen wie Zeichenfolgenvergleichen, Zeichenfolgensuchen und Zeichenfolgen mit Groß-/Kleinbuchstaben verwendet.

Der globalisierungsinvariante Modus wird für Apps verwendet, für die keine Globalisierungsunterstützung erforderlich ist. Das heißt, die App wird ohne Zugriff auf kulturspezifische Daten und kulturspezifisches Verhalten ausgeführt. Der globalisierungsinvariante Modus ist in einigen Docker-Containern standardmäßig aktiviert, z. B. in Alpine-Containern.

Altes Verhalten

In früheren .NET-Versionen gilt Folgendes, wenn der globalisierungsinvariante Modus aktiviert ist:

  • Wenn eine App eine Kultur erstellt, bei der es sich nicht um die invariante Kultur handelt, ist der Vorgang erfolgreich, die zurückgegebene Kultur verwendet aber immer Daten der invarianten Kultur anstelle der echten Kulturdaten.

  • Die Zuordnung von Groß-/Kleinbuchstaben wurde nur für ASCII-Zeichen durchgeführt. Beispiel:

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

Neues Verhalten

Ab .NET 6 gilt Folgendes, wenn der globalisierungsinvariante Modus aktiviert ist:

  • Wenn eine App versucht, eine Kultur zu erstellen, bei der es sich nicht um die invariante Kultur handelt, wird eine CultureNotFoundException-Ausnahme ausgelöst.

  • Die Zuordnung von Groß-/Kleinbuchstaben wird für alle Unicode-definierten Zeichen durchgeführt. Zum Beispiel:

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

Eingeführt in Version

.NET 6

Grund für die Änderung

Die Änderung bei der Kulturerstellung wurde eingeführt, damit kulturbezogene Probleme einfacher diagnostiziert werden können. Einige Benutzer wissen nicht, dass ihre Apps in einer Umgebung ausgeführt werden, in der der globalisierungsinvariante Modus aktiviert ist. Möglicherweise tritt unerwartetes Verhalten auf, das nicht dem globalisierungsinvarianten Modus zugeschrieben wird. Die Fehlerdiagnose gestaltet sich also schwierig.

Die vollständige Unterstützung für Zuordnungen von Groß-/Kleinbuchstaben wurde eingeführt, um die Nutzbarkeit und die Funktionalität des globalisierungsinvarianten Modus zu verbessern.

In den meisten Fällen ist keine Aktion erforderlich. Wenn jedoch das vorherige Verhalten für die Kulturerstellung gewünscht ist, können Sie eine Laufzeitkonfigurationsoption so festlegen, dass die Erstellung einer Kultur im globalisierungsinvarianten Modus zulässig ist. Weitere Informationen finden Sie unter Vordefinierte Kulturen.

Betroffene APIs

Siehe auch