Compartir vía


Creación de referencia cultural y asignación de casos en el modo invariable de globalización

Este cambio importante afecta al modo invariable de globalización de dos maneras:

  • Anteriormente, .NET permitía crear cualquier referencia cultural en el modo invariable de globalización, siempre que su nombre se ajustase a BCP-47. Sin embargo, se usaban los datos de la referencia cultural invariable en lugar de los datos de la referencia cultural real. A partir de .NET 6, se produce una excepción si se crea una referencia cultural distinta de la referencia cultural invariable en el modo invariable de globalización.
  • Anteriormente, el modo invariable de globalización solo permitía la asignación de casos para caracteres ASCII. A partir de .NET 6, el modo invariable de globalización proporciona compatibilidad completa con la asignación de casos para todos los caracteres definidos por Unicode. La asignación de casos se usa en operaciones como comparaciones de cadenas, búsquedas de cadenas y cadenas con mayúsculas o minúsculas.

El modo invariable de globalización se usa para las aplicaciones que no requieren compatibilidad de globalización. Es decir, la aplicación se ejecuta sin acceso a datos ni comportamientos específicos de la referencia cultural. El modo invariable de globalización está habilitado de manera predeterminada en algunos contenedores de Docker, por ejemplo, contenedores Alpine.

Comportamiento anterior

En versiones anteriores de .NET, cuando el modo invariable de globalización está habilitado:

  • Si una aplicación crea una referencia cultural que no es la referencia cultural invariable, la operación se realiza correctamente, pero la referencia cultural devuelta siempre usa los datos de la referencia cultural invariable en lugar de los datos de la referencia cultural real.

  • La asignación de casos solo se realiza para caracteres ASCII. Por ejemplo:

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

Comportamiento nuevo

A partir de .NET 6, cuando está habilitado el modo invariable de globalización:

  • Si una aplicación intenta crear una referencia cultural que no es la referencia cultural invariable, se produce una excepción CultureNotFoundException.

  • La asignación de casos se realiza para todos los caracteres definidos por Unicode. Por ejemplo:

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

Versión introducida

.NET 6

Motivo del cambio

El cambio en la creación de referencias culturales se ha incorporado para diagnosticar más fácilmente los problemas relacionados con las referencias culturales. Algunos usuarios no son conscientes de que sus aplicaciones se ejecutan en un entorno donde está habilitado el modo invariable de globalización. Es posible que experimenten un comportamiento inesperado y no realicen la asociación con el modo invariable de globalización, por lo que es difícil diagnosticar el problema.

La compatibilidad completa con la asignación de casos se ha incorporado para mejorar la facilidad de uso y la experiencia en el modo invariable de globalización.

En la mayoría de los casos no es necesario realizar ninguna acción. Sin embargo, si prefiere el comportamiento anterior de creación de referencias culturales, puede establecer una opción de configuración en tiempo de ejecución para permitir la creación de cualquier referencia cultural en el modo invariable de globalización. Para obtener más información, vea Referencias culturales predefinidas.

API afectadas

Consulte también