Pergunta

Eu estou tentando carregar um arquivo resx no meu site .net usando:

ResourceManager rm = new ResourceManager( "Project.Resource", Assembly.GetExecutingAssembly() );

O arquivo Resource.resx está nas App_LocalResources pasta e está previsto para ser incorporado em conjunto na construção.

Quando tento acessar o arquivo resx usando:

rm.GetString( "key" ); ou rm.GetString( "key", culture );

Eu recebo uma mensagem de erro:

Não foi possível encontrar quaisquer recursos apropriado para a cultura especificado ou a cultura neutra. Certificar-se de que "Project.Resource.resources" foi corretamente incorporado ou ligado na assembly "Projeto" em tempo de compilação, ou que todos os conjuntos de satélite necessárias são carregável e totalmente assinado.

Observe o Resources ... alguma idéia sobre o que está acontecendo aqui?

Foi útil?

Solução

Eu acho que a maneira que você está usando ResourceManager é errado. Veja este pós .

Também nota, quando você abrir o prompt de comando Visual Studio, e resgen.exe executado, ele diz que seu usado para arquivos de recursos converter de um formato para outro (ou seja resx aos recursos). Eu acho que, você vai precisar para converter o arquivo para recursos de resx e, em seguida, carregá-lo usando resourceManager.

Outras dicas

Para carregar .resx em ResourceManager você precisa especificar namespace

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());

ou você pode obter ResourceManager de graça se definir o acesso modificador dentro Editor de recursos gerenciados para internos ou públicos, depois disso VS irá gerar ResxName.Designer.cs

var rm = ResxName.ResourceManager;

Não há maneira surpreendentemente simples de leitura de recursos por string:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")

É solução limpa e elegante para a leitura de recursos por chaves onde "a notação de ponto" não podem ser utilizados (por exemplo, quando chave de recurso é mantido no banco de dados).

Eu não tenho certeza qual versão do .NET Framework que você está usando.

Tente channging a maneira como você trazer o ResourceManager para a vida.

ResourceManager rm = 
     new ResourceManager("Project.Resource", 
                         System.Reflection.Assembly.Load("App_LocalResources"));

Ele deve funcionar.

Isso também é exposta como uma propriedade estática da .Designer.cs classe gerada automaticamente do gerente de concreto resorce.

Adicione a extensão .resx explicitamente.

Você também pode usar a classe gerada automaticamente e usar suas propriedades se que é adequado para seu projeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top