Mensaje de error al ejecutar una aplicación o intentar acceder a un sitio web en un equipo que tiene instalada una actualización de software determinada de .NET Framework 2.0: "No se admite el nombre de referencia cultural 'Cultura'"

Síntomas

En un equipo que tenga microsoft Windows Server 2003 instalado, instale la actualización de software de Microsoft .NET Framework 2.0 que se describe en el artículo siguiente en Microsoft Knowledge Base:

928365 Descripción de la actualización de seguridad de .NET Framework 2.0 para Windows Server 2003, Windows XP y Windows 2000: 10 de julio de 2007

 Al ejecutar una aplicación o intentar acceder a un sitio web en el equipo, es posible que reciba el siguiente mensaje de error:

Nota

[System.ArgumentException] : el nombre cultural "Culture" no es compatible con las siguientes 13 culturas: en-CB az-AZ-Latn uz-UZ-Latn sr-SP-Latn az-AZ-Cyrl 1uz-UZ-Cyrl sr-SP-Cyrl bs-BA-Cyrl sr-BA-Latn sr-BA-Cyrl bs-BA-Latn iu-CA-Latn div-MV

Además, si una aplicación tiene recursos que usan el formato de nombre de referencia cultural anterior y el nombre de referencia cultural del usuario usa el nuevo formato de nombre de referencia cultural, la aplicación no puede encontrar recursos para el formato de nombre de referencia cultural anterior.

Causa

La actualización de software que se menciona en la sección "Síntomas" es una actualización acumulativa de .NET Framework 2.0. Esta actualización incluye cambios en los nombres de referencia cultural. Los nuevos nombres de referencia cultural siguen la sintaxis de los estándares IETF (RFC 4646 y RFC 4647). Los cambios en los nombres de referencia cultural mejoran la interoperabilidad al asegurarse de que cada configuración regional tiene un identificador coherente.

Las asignaciones de los nombres de referencia cultural antigua a los nuevos nombres de referencia cultural son las siguientes:

Nombre antiguo de la referencia cultural Nuevo nombre de referencia cultural
az-AZ-Latn az-Latn-AZ
uz-UZ-Latn uz-Latn-UZ
sr-SP-Latn sr-Latn-CS
az-AZ-Cyrl az-Cyrl-AZ
uz-UZ-Cyrl uz-Cyrl-UZ
sr-SP-Cyrl sr-Cyrl-CS
bs-BA-Cyrl bs-Cyrl-BA
sr-BA-Latn sr-Latn-BA
sr-BA-Cyrl sr-Cyrl-BA
bs-BA-Latn bs-Latn-BA
iu-CA-Latn iu-Latn-CA
div-MV dv-MV
en-CB en-029

Solución alternativa

Para solucionar este problema, cree culturas personalizadas a partir de las nuevas configuraciones regionales que usan los nombres de las culturas antiguas. Para ello, siga estos pasos.

Nota Debe tener instalado .NET Framework 2.0 para usar el programa de muestra que se proporciona aquí.

  1. Cree una aplicación que se pueda usar para crear una referencia cultural personalizada. Para hacerlo, siga estos pasos.

    1. Haga clic en Inicio, haga clic en Ejecutar, escriba bloc de notas y, a continuación, haga clic en Aceptar.

    2. Pega el código siguiente en el Bloc de notas.

      using System;
      using System.Globalization;
      
      public class MakeCultures
      {
          static void Main()
          {
              CreateCopyCulture("en-029", "en-CB");
              CreateCopyCulture("az-Latn-AZ", "az-AZ-Latn");
              CreateCopyCulture("uz-Latn-UZ", "uz-UZ-Latn");
              CreateCopyCulture("sr-Latn-CS", "sr-SP-Latn");
              CreateCopyCulture("az-Cyrl-AZ", "az-AZ-Cyrl");
              CreateCopyCulture("uz-Cyrl-UZ", "uz-UZ-Cyrl");
              CreateCopyCulture("sr-Cyrl-CS", "sr-SP-Cyrl");
              CreateCopyCulture("bs-Cyrl-BA", "bs-BA-Cyrl");
              CreateCopyCulture("sr-Latn-BA", "sr-BA-Latn");
              CreateCopyCulture("sr-Cyrl-BA", "sr-BA-Cyrl");
              CreateCopyCulture("bs-Latn-BA", "bs-BA-Latn");
              CreateCopyCulture("iu-Latn-CA", "iu-CA-Latn");
              CreateCopyCulture("dv-MV", "div-MV");
      
      
          }
      
          static void CreateCopyCulture(string strRealName, string strAliasName)
          {
              try
              {
                  // Create a new culture based on the old name
                  CultureAndRegionInfoBuilder carib = new CultureAndRegionInfoBuilder(
                      strAliasName, CultureAndRegionModifiers.None);
      
                  carib.LoadDataFromCultureInfo(new CultureInfo(strRealName));
                  carib.LoadDataFromRegionInfo(new RegionInfo(strRealName));
      
                  carib.Register();
      
                  // Change the existing culture's parent to the old culture
                  carib = new CultureAndRegionInfoBuilder(strRealName, 
                                  CultureAndRegionModifiers.Replacement);
      
                  carib.Parent = new CultureInfo(strAliasName);
                  carib.Register();
      
                  // Verify they're registered...
                  CultureInfo ci = new CultureInfo(strAliasName);
                  Console.WriteLine("Aliased culture {0} has parent of {1}.", ci, ci.Parent);
                  ci = new CultureInfo(strRealName);
                  Console.WriteLine("\"Real\" culture {0} has parent of {1}.", ci, ci.Parent);
              }
              catch (Exception e)
              {
                  Console.WriteLine("Unable to create custom culture " + strAliasName);
                  Console.WriteLine(e);
              }
          }
      }
      
      

      Nota Este programa de muestra establece los padres de las nuevas culturas a las antiguas culturas. Los padres de las viejas culturas no pueden ser las nuevas culturas al mismo tiempo, porque esta situación causaría recursividad infinita durante la búsqueda de recursos.

    3. En el menú Archivo, haga clic en Guardar como.

    4. En el cuadro de diálogo Guardar como, haga clic en Mi documento, escriba MakeCultures.cs en el cuadro Nombre de archivo, haga clic en Todas las Files en el cuadro Guardar como tipo y, a continuación, haga clic en Guardar.

    5. Salga del Bloc de notas.

  2. Ejecute la aplicación que creó en el paso 1 para crear una referencia cultural personalizada. Para hacerlo, siga estos pasos.

    1. Haga clic en Inicio y en Ejecutar, escriba cmd y, por último, haga clic en Aceptar.
    2. Escriba cd "Mis documentos" y, después, presione ENTRAR
    3. Escriba %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs y presione ENTRAR.
    4. Escriba MakeCultures.exe para ejecutar el programa y crear la referencia cultural.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".