Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Ação recomendada
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
- CultureInfo
- System.Globalization.CultureInfo.CreateSpecificCulture(String)
- System.Globalization.CultureInfo.GetCultureInfo
- RegionInfo
- Todas as APIs que executam definição de maiúsculas e minúsculas, comparação ou pesquisa de cadeia de caracteres