Compartilhar via


Criação de cultura e mapeamento de casos no modo globalização-invariante

Essa alteração interruptiva afeta o modo invariável de globalização de duas maneiras:

  • Anteriormente, o .NET permitia que qualquer cultura fosse criada no modo invariável de globalização, desde que o nome da cultura estivesse em conformidade com o BCP-47. No entanto, os dados de cultura invariáveis foram usados em vez dos dados de cultura reais. A partir do .NET 6, uma exceção será gerada se você criar uma cultura diferente da cultura invariável no modo invariável de globalização.
  • Anteriormente, o modo de globalização invariável só tinha suporte para mapeamento de casos para caracteres ASCII. A partir do .NET 6, o modo invariável de globalização fornece suporte completo de mapeamento de maiúsculas e minúsculas para todos os caracteres definidos por Unicode. O mapeamento de maiúsculas e minúsculas é usado em operações como comparações de cadeias de caracteres, pesquisas de cadeia de caracteres e cadeias de caracteres em maiúsculas ou minúsculas.

O modo invariável de globalização é usado para aplicativos que não exigem suporte à globalização. Ou seja, o aplicativo é executado sem acesso a dados e comportamentos específicos da cultura. O modo invariável de globalização é habilitado por padrão em alguns contêineres do Docker, por exemplo, contêineres alpinos.

Comportamento antigo

Nas versões anteriores do .NET, quando o modo invariável de globalização está habilitado:

  • Se um aplicativo cria uma cultura que não é a cultura invariável, a operação é bem-sucedida, mas a cultura retornada sempre usa os dados de cultura invariáveis em vez dos dados de cultura reais.

  • O mapeamento de maiúsculas e minúsculas era executado apenas para caracteres ASCII. Por exemplo:

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

Novo comportamento

Começando no .NET 6 quando o modo invariável de globalização estiver habilitado:

  • Se um aplicativo tentar criar uma cultura que não seja a cultura invariável, uma CultureNotFoundException exceção será gerada.

  • O mapeamento de maiúsculas e minúsculas é executado para todos os caracteres definidos por Unicode. Por exemplo:

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

Versão introduzida

.NET 6

Motivo da alteração

A mudança na cultura organizacional foi introduzida para diagnosticar com mais facilidade problemas relacionados à cultura. Alguns usuários não sabem que seus aplicativos estão em execução em um ambiente em que o modo invariável de globalização está habilitado. Eles podem experimentar um comportamento inesperado e não fazem a associação com o modo invariável de globalização, portanto, é difícil diagnosticar o problema.

O suporte completo de mapeamento de maiúsculas e minúsculas foi introduzido para melhor usabilidade e experiência no modo invariável de globalização.

Na maioria dos casos, nenhuma ação é necessária. No entanto, se desejar o comportamento anterior de criação de cultura, você poderá definir uma opção de configuração de runtime para permitir a criação de qualquer cultura no modo invariável de globalização. Para obter mais informações, consulte culturas predefinidas.

APIs afetadas

Consulte também