Share via


Creazione delle impostazioni cultura e mapping di maiuscole e minuscole in modalità invariante di globalizzazione

Questa modifica che causa un'interruzione influisce sulla modalità invariante globalizzazione in due modi:

  • In precedenza, .NET consentiva la creazione di impostazioni cultura in modalità invariante di globalizzazione, purché il nome delle impostazioni cultura sia conforme a BCP-47. Tuttavia, sono stati usati i dati delle impostazioni cultura invarianti anziché i dati delle impostazioni cultura reali. A partire da .NET 6, viene generata un'eccezione se si creano impostazioni cultura diverse dalle impostazioni cultura invarianti in modalità invariante di globalizzazione.
  • In precedenza, la modalità invariante di globalizzazione supportava solo il mapping tra maiuscole e minuscole per i caratteri ASCII. A partire da .NET 6, la modalità invariante di globalizzazione offre supporto completo per il mapping tra maiuscole e minuscole per tutti i caratteri definiti da Unicode. Il mapping tra maiuscole e minuscole viene usato in operazioni quali confronti tra stringhe, ricerche di stringhe e stringhe maiuscole o minuscole.

La modalità invariante di globalizzazione viene usata per le app che non richiedono alcun supporto per la globalizzazione. Ovvero, l'app viene eseguita senza accesso a dati e comportamenti specifici delle impostazioni cultura. La modalità invariante di globalizzazione è abilitata per impostazione predefinita in alcuni contenitori Docker, ad esempio contenitori Alpine.

Comportamento precedente

Nelle versioni precedenti di .NET quando è abilitata la modalità invariante di globalizzazione:

  • Se un'app crea impostazioni cultura non diverse dalle impostazioni cultura invarianti, l'operazione ha esito positivo, ma le impostazioni cultura restituite usano sempre i dati delle impostazioni cultura invarianti anziché i dati delle impostazioni cultura reali.

  • Il mapping tra maiuscole e minuscole è stato eseguito solo per i caratteri ASCII. Ad esempio:

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

Nuovo comportamento

A partire da .NET 6 quando è abilitata la modalità invariante globalizzazione:

  • Se un'app tenta di creare impostazioni cultura non diverse dalle impostazioni cultura invarianti, viene generata un'eccezione CultureNotFoundException.

  • Il mapping tra maiuscole e minuscole viene eseguito per tutti i caratteri definiti da Unicode. Ad esempio:

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

Versione introdotta

.NET 6

Motivo della modifica

Il cambiamento di creazione delle impostazioni cultura è stato introdotto per diagnosticare più facilmente i problemi correlati alle impostazioni cultura. Alcuni utenti non sanno che le app vengono eseguite in un ambiente in cui è abilitata la modalità invariante di globalizzazione. Possono riscontrare comportamenti imprevisti e non fare l'associazione con la modalità invariante di globalizzazione, quindi è difficile diagnosticare il problema.

Il supporto completo per il mapping dei casi è stato introdotto per migliorare l'usabilità e l'esperienza in modalità invariante di globalizzazione.

Nella maggior parte dei casi non è necessaria alcuna azione. Tuttavia, se si desidera il comportamento precedente di creazione delle impostazioni cultura, è possibile impostare un'opzione di configurazione di runtime per consentire la creazione di impostazioni cultura in modalità invariante di globalizzazione. Per altre informazioni, vedere impostazioni cultura predefinite.

API interessate

Vedi anche