Você pode receber uma mensagem de erro "System.Resources.MissingManifestResourceException" ao acessar arquivo .Resources do formulário em tempo de execução

Traduções deste artigo Traduções deste artigo
ID do artigo: 318603 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você estiver executando o Visual Basic .NET ou Visual Basic 2005, translation from VPE for Csharp Visual .NET ou Visual J# .NET Windows aplicativo, você pode receber a seguinte mensagem de erro ou uma semelhante quando você carrega um formulário:
Ocorreu uma exceção sem tratamento do tipo 'System.Resources.MissingManifestResourceException' em mscorlib.dll

Obter informações adicionais: não foi possível localizar os recursos apropriados para a cultura especificada (ou a cultura neutra) no assembly dado. Certifique-se "Form1.resources" corretamente foi incorporado ou vinculado no assembly "myApplication".

Nome_de_base: Form1 locationInfo: nome de arquivo de recurso WindowsApplication4.Form1: Form1.resources assembly: myApplication, versão = 1.0.781.33026, Culture = neutral, PublicKeyToken = nulo
Se você clicar em quebra na caixa de diálogo de erro e se você estiver executando o código no ambiente de desenvolvimento integrado (IDE), você descobre que uma linha de código dentro de instrução InitializeComponent causa esse problema. Por exemplo, se você criar o exemplo da seção "Mais informações", este erro ocorre em conjunto com um controle ImageList . Embora a mensagem de erro pode se referir a um controle diferente, observe que resources.GetObject aparece nessa linha de código na mensagem de erro:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

Causa

Esse problema ocorre porque a classe de formulário não é a primeira classe no módulo de código do formulário.

Observação Este específica de um artigo documentos causar desse problema. Pode haver outras situações que podem levar a resultados semelhantes.

Resolução

Para resolver esse problema, mova todos as outras definições de classe para que eles apareçam após a definição de classe do formulário.

Como Contornar

Para contornar esse problema, altere a propriedade Nome do arquivo de recurso do arquivo .resX do projeto. Para fazer isso, execute as seguintes etapas:
  1. Inicie o Visual Studio .NET 2003 ou Visual Studio 2005 .
  2. Abra o projeto que contém o form class localizadas onde você receber a mensagem de erro mencionada na seção "Sintomas".
  3. No Solution Explorer, expanda todas as pastas.
  4. Clique com o botão direito do mouse Form1.resX e, em seguida, clique em Propriedades .
  5. Na caixa de diálogo Form1.resX Property Pages , expanda Configuration Properties e clique em Geral em Recursos gerenciados .
  6. Alterar a propriedade Nome do arquivo de recurso de $(IntDir)/ <placeholder>. Form1.resources para $ (IntDir) / <placeholder>.MyForm .Resources e em seguida, clique em OK .

    Observação MyForm é um espaço reservado para o nome de classe da classe de formulário que você localizados.
  7. Pressione CTRL + SHIFT + S para salvar o projeto. Pressione CTRL + SHIFT + B para criar a solução.Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    824495CORRECÇÃO: Recebe uma mensagem de erro "MissingManifestResourceException" quando adiciona um recurso vinculado no Visual Studio .NET 2003
  8. Pressione F5 para executar o aplicativo. O aplicativo ser executado e o Form1 formulário é exibido.
.

Situação

Esse comportamento é por design.

Mais Informações

Um módulo de código do formulário pode conter várias classes. Quando o projeto é criado, o sistema de compilação deve decidir que classe ele deve usar para criar o arquivo .Resources. O design do sistema de compilação do projeto Especifica que a primeira classe no módulo de código é a classe na qual o arquivo .Resources está baseado. O arquivo .Resources é nomeado de acordo com essa classe, não o nome do formulário. Na maioria dos casos, esses dois nomes são iguais. No entanto, se esses nomes forem diferentes, você receber a mensagem de erro mencionada na seção "Sintomas".

Quando você carrega o formulário em tempo de execução, o método InitializeComponent talvez precise obter objetos do arquivo .Resources. InitializeComponent procura arquivo .Resources Form_Name no assembly. Porque o arquivo .Resources Form_Name inicial nunca foi criado ou vinculado ao assembly, a tentativa de recuperar o arquivo .Resources falhará.

Etapas para reproduzir o comportamento

  1. Crie um projeto Windows Application no Visual Basic .NET ou no Visual Basic 2005, translation from VPE for Csharp Visual .NET ou Visual J# .NET. O Form1 é criado por padrão. Observação o Visual Studio 2005, você receberá a seguinte mensagem de aviso:
    Componentes não podem ser adicionados no modo de localização. Selecione (padrão) na propriedade idioma para retornar ao formulário padrão e adicionar componentes.
    Observação Você deve alterar o código no Visual Basic 2005. Por padrão, Visual Basic cria dois arquivos para o projeto quando você cria um projeto Windows Forms. Se o formulário é denominado Form1, os dois arquivos que representam o formulário são chamados de Form1.vb e Form1.Designer.vb. Escreva o código no arquivo Form1.vb. O Windows Forms Designer escreve o código no arquivo Form1.Designer.vb. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o código gerado pelo designer sendo intercaladas com seu código.

    Para obter mais informações sobre os novos aprimoramentos linguagem Visual Basic 2005, visite o seguinte site da Web Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Adicione um controle ImageList ao Form1.
  3. Adicionar um arquivo de ícone para o controle ImageList .
  4. No módulo de código de Form1, adicione o seguinte código antes da definição de Form1: Visual Basic. NET:
    Public Class someClass
    End Class
    					
    Visual translation from VPE for Csharp .NET e Visual J# .NET:
    public class someClass
    {
    }
    					
  5. Crie o projeto. Observe que o projeto criará com êxito.
  6. Execute o projeto. Observe que você recebe a mensagem de erro mencionada na seção "Sintomas".

Propriedades

ID do artigo: 318603 - Última revisão: sexta-feira, 11 de maio de 2007 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbvs2005applies kbvs2005swept kbprb KB318603 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 318603

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com