Sintomas
Em um computador que tem o Microsoft Windows Server 2003 instalado, você instala a atualização de software do Microsoft .NET Framework 2.0 descrita no seguinte artigo da Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
928365 Descrição da atualização de segurança para o .NET Framework 2.0, para o Windows 2003, Windows XP e Windows 2000: 10 de julho de 2007
Ao executar um aplicativo ou tentar acessar um site no computador, a seguinte mensagem de erro poderá ser exibida:
[System.ArgumentException] : Não há suporte para o nome de cultura 'Cultura' para as 13 culturas a seguir: en-CB az-AZ-Latn uz-UZ-Latn sr-SP-Latn az-AZ-Cyrl uz-UZ-Cyrl sr-SP-Cyrl bs-BA-Cyrl sr-BA-Latn sr-BA-Cyrl bs-BA-Latn iu-CA-Latn div-MV
Além disso, se um aplicativo tiver recursos que usem o formato do nome de cultura antigo e se o nome de cultura do usuário usar o novo formato do nome de cultura, o aplicativo não poderá localizar os recursos para o formato do nome de cultura antigo.
Causa
A atualização de software mencionada na seção "Sintomas" é uma atualização cumulativa para o .NET Framework 2.0. Essa atualização inclui alterações para os nomes de cultura. Os novos nomes de cultura seguem a sintaxe dos padrões IETF (RFC 4646 e RFC 4647). As alterações dos nomes de cultura melhoram a interoperabilidade ao verificar se todos os locais contêm um identificador consistente.
Os mapeamentos dos nomes de cultura antigos para os novos nomes de cultura são:
Nome de cultura antigo |
Novo nome de cultura |
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 |
Como Contornar
Como solução alternativa para esse problema, compile culturas personalizadas pelos novos locais que usem os nomes de cultura antigos. Para fazer isto, execute as seguintes etapas:
Observação É necessário ter o .NET Framework 2.0 instalado para usar o programa de exemplo fornecido.
-
Crie um aplicativo que possa ser usado para compilar uma cultura personalizada. Para fazer isto, execute as seguintes etapas:
-
Clique em Iniciar, em Executar, digite notepad e clique em OK.
-
Cole o seguinte código no Bloco 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);
}
}
}Observação Esse programa de exemplo define os pais das novas culturas para as culturas antigas. Os pais das culturas antigas não podem ser as novas culturas ao mesmo tempo, pois essa situação causa recursão infinita durante a consulta de recursos.
-
No menu Arquivo, clique em Salvar como.
-
Na caixa de diálogo Salvar como, clique em Meus documentos, digite MakeCultures.cs na caixa Nome do arquivo, clique em Todos os arquivos na caixa Salvar como tipo e clique em Salvar.
-
Saia do Bloco de notas.
-
-
Execute o aplicativo criado na etapa 1 para compilar uma cultura personalizada. Para fazer isto, execute as seguintes etapas:
-
Clique em Iniciar, em Executar, digite cmd e clique em OK.
-
Digite cd "My Documents" e pressione ENTER.
-
Digite %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs e pressione ENTER.
-
Digite MakeCultures.exe para executar o programa a fim de compilar a cultura.
-
Situação
A Microsoft confirmou que este é um problema nos produtos Microsoft que estão listados na seção "Aplica-se a".