Uma exceção System.Resources.MissingManifestResourceException ocorre quando você tenta acessar um recurso localizado

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 839861
Sintomas
Em um aplicativo do Microsoft ASP.NET, quando você tentar acessar um recurso localizado, pode ocorrer uma exceção System.Resources.MissingManifestResourceException e seu navegador da Web pode exibir uma mensagem de erro semelhante à seguinte mensagem de erro:

Erro de servidor no ' /MyApp' Aplicativo.

Não foi possível localizar nenhum recurso adequado para a cultura especificada (ou a cultura neutra) no assembly fornecido. Certifique-se de"MyApp. strings.resources "foi incorporado ou vinculado ao assembly corretamente"MyApp". baseName: MyApp.strings locationInfo: <null>nome do arquivo de recurso:<b00> </b00> </null>MyApp. strings.resources assembly: MyApp, Versão =VersionNumber, Culture = neutral, PublicKeyToken = null

Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da web. Examine o rastreamento da pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da exceção: System.Resources.MissingManifestResourceException: Não foi possível localizar nenhum recurso adequado para a cultura especificada (ou a cultura neutra) no assembly fornecido. Certifique-se de"MyApp. strings.resources "foi incorporado ou vinculado ao assembly corretamente"MyApp". baseName: MyApp.strings locationInfo: <null>nome do arquivo de recurso:<b00> </b00> </null>MyApp. strings.resources assembly: MyApp, Versão =VersionNumber, Culture = neutral, PublicKeyToken = null
Observações:
  • Na mensagem de erro, MyApp é aplaceholder para o nome do seu aplicativo ASP.NET.
  • As informações de erro anterior,VersionNumber é um espaço reservado para a versão do assembly principal de seu aplicativo.
Causa
Esse problema ocorre caso você use um recurso localizado que exista em um satélite assembly que você tenha criado usando um arquivo .resources que tenha um nome de arquivo inapropriado. Esse problema normalmente ocorre se você criar manualmente um assembly satélite.

Para criar manualmente um assembly satélite, primeiro você deve executar o Resource File Generator (Resgen.exe) e, em seguida, você deve executar o vinculador de Assembly (Al.exe). Quando você executa Resgen.exe, se você não especificar o nome do arquivo do arquivo de saída enquanto você converte um arquivo de formato (. resx) do recurso baseado em XML para um arquivo. Resources, Resgen.exe cria um arquivo. Resources que tem o mesmo nome de arquivo do arquivo de entrada. Se o nome do seu arquivo de formato de recurso baseado em XML não for iniciado com o espaço para nome do seu aplicativo, o nome do arquivo do arquivo. Resources não conterá o nome do namespace ou. Você pode executar Al.exe para criar um assembly satélite que contém os recursos localizados que estão no arquivo. Resources. No entanto, quando você tentar acessar um recurso localizado que existe no assembly satélite, ocorrerá o comportamento mencionado na seção "Sintomas".
Como Contornar
Para contornar esse problema, especifique o nome do arquivo. Resources ao executar o Resgen.exe. Enquanto você especificar o nome do arquivo do arquivo. Resources, certifique-se de que o nome do arquivo começa com o nome do namespace do seu aplicativo. Por exemplo, execute o seguinte comando no prompt de comando Visual Studio Microsoft.NET para criar um arquivo. Resources que tem o nome do namespace do seu aplicativo no início do nome do arquivo:
Resgen seqüências.CultureIdentifier. resx MyApp.strings.CultureIdentifier. Resources
Observações:
  • Neste exemplo,CultureIdentifier é um espaço reservado para um identificador (como "ja") que você pode usar para especificar a cultura yourresources.
  • O comando anterior, MyApp ISA espaço reservado para o nome do namespace do seu aplicativo.
Situação
Esse comportamento é pré-definido.
Mais Informações

Etapas para reproduzir o comportamento

  1. Crie um projeto de aplicativo de Web do ASP.NET que usa o recurso de alocalized. Para fazer isso, execute as seguintes etapas:
    1. Inicie o Visual Studio .NET.
    2. Use Microsoft.NET de Visual Basic ou Microsoft Visual C# .NET para criar um projeto de aplicativo de Web do ASP.NET chamado MyApp. Por padrão, é criado um formulário da Web denominado WebForm1.
    3. No Solution Explorer, clique com botão direito WebForm1e, em seguida, clique em View Code. Abre a janela de código.
    4. Se você estiver usando o .NET de Visual Basic, adicione o seguinte código na parte superior da janela de código:
      Imports System.ReflectionImports System.DiagnosticsImports System.ResourcesImports System.ThreadingImports System.Globalization
      Se você estiver usando o Visual C# .NET, adicione o seguinte código na parte superior da janela de código:
      using System.Reflection;using System.Diagnostics;using System.Resources;using System.Threading;using System.Globalization;
    5. Se você estiver usando o .NET de Visual Basic, adicione o seguinte código para o Page_Load manipulador de eventos para tentar acessar o recurso localizado:
      Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja")Dim rm As ResourceManager = New ResourceManager("MyApp.strings", System.Reflection.Assembly.Load("MyApp"))Response.Write("Hello: " + rm.GetString("myVar"))
      Se você estiver usando o Visual C# .NET, adicione o seguinte código para o Page_Load manipulador de eventos para tentar acessar o recurso localizado:
      Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja");ResourceManager rm = new ResourceManager("MyApp.strings",Assembly.Load("MyApp"));Response.Write("Hello: " + rm.GetString("myVar"));
    6. No menu Build , clique em Criar MyApp.
  2. Crie um arquivo de formato de recurso baseado em XML que contém o recurso de alocalized. Para fazer isso, execute as seguintes etapas:
    1. No menu projeto , clique em Add New Item. É exibida a caixa de diálogo Add New Item - MyApp .
    2. Em modelos, clique em Assembly Resource File.
    3. Na caixa nome , substitua o texto existente strings.ja.resxe, em seguida, clique em Abrir. O modo de exibição de dados do arquivo de formato de strings.ja recurso baseado em XML é exibida.
    4. Na exibição de dados , em nome, digite myVar.
    5. Na exibição de dados , em valor, digite Japonês.
    6. No menu arquivo , clique em Salvar strings.ja.resx.
  3. Crie um assembly satélite que contém um localizedresource. Para fazer isso, execute as seguintes etapas:
    1. No Solution Explorer, clique com botão direito strings.ja.resxe, em seguida, clique em Exclude From Project.
    2. Na pasta raiz da unidade C no seu computador, crie uma pasta chamada MyTemp.
    3. Mova o arquivo de formato de recurso baseado em XML de strings.ja que você salvou na etapa 2f para a pasta MyTemp.

      Observação: O arquivo de formato de recurso baseado em XML strings.ja existe normalmente na pasta MyApp onde existem outros arquivos de projeto.
    4. Inicie um prompt de comando do Visual Studio .NET de.
    5. No Visual Studio .NET de prompt de comando, execute o seguinte comando para criar um arquivo. Resources:
      Resgen strings.ja.resx
    6. No Visual Studio .NET de prompt de comando, execute o seguinte comando para criar o assembly satélite MyApp.resources.dll que contém seus recursos localizados:
      Al.exe /t:lib /embed:strings.ja.resources /culture:ja /out:MyApp.resources.dll
  4. Tente acessar o recurso localizado. Para fazer isso, com++ etapas:
    1. Na pasta Bin da pasta MyApp onde você criou os arquivos de projeto, crie uma pasta chamada JA.
    2. Mova o assembly satélite MyApp.resources.dll que você criou na etapa 3f à pasta JA.
    3. Alterne para o Visual Studio .NET.
    4. No menu Debug , clique em Iniciar. Abre o navegador da Web e o comportamento mencionado na seção "Sintomas" ocorre.
Referências
Para obter mais informações, visite os seguintes sites da Microsoft Developer Network (MSDN):

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 839861 - Última Revisão: 05/15/2016 20:47:00 - Revisão: 2.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

  • kblocalization kbresource kbsample kberrmsg kbcode kbprb kbmt KB839861 KbMtpt
Comentários