Poderá receber uma mensagem de erro "System.Resources.MissingManifestResourceException" quando aceder ao ficheiro de Resources do formulário em tempo de execução

Traduções de Artigos Traduções de Artigos
Artigo: 318603 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando estiver a executar o Visual Basic .NET ou Visual Basic 2005, Visual C# .NET ou Visual J# .NET Windows aplicação, poderá receber a seguinte mensagem de erro ou uma semelhante quando carrega um formulário:
Ocorreu uma excepção não processada do tipo 'System.Resources.MissingManifestResourceException' na mscorlib.dll

Obter informações adicionais: não foi possível localizar a opção todos os recursos adequados ao idioma especificado (ou ao idioma neutro) na assemblagem especificada. Certifique-se de "Form1.resources" correctamente foi incorporado ou ligado na assemblagem "myApplication".

baseName: locationInfo Form1: nome de ficheiro de recurso WindowsApplication4.Form1: assemblagem Form1.resources: myApplication, versão = 1.0.781.33026, idioma = neutro, PublicKeyToken = nulo
Se clicar em Interromper na caixa de diálogo de erro e, se estiver a executar o código no ambiente de desenvolvimento integrado (IDE), descobrir que uma linha de código dentro de instrução InitializeComponent faz com que este problema. Por exemplo, se criar o exemplo da secção "Mais informação", este erro ocorre em conjunto com um controlo ImageList . Apesar da mensagem de erro pode fazer referência a um controlo diferente, repare que resources.GetObject aparece na linha de código na mensagem de erro:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

Causa

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

Nota Este específicos de um artigo documentos causar este problema. Poderão existir outras situações que podem conduzir a resultados semelhantes.

Resolução

Para resolver este problema, mova todos as outras definições de classe para que apareçam depois de definição de classe do formulário.

Como contornar

Para contornar este problema, altere a propriedade Nome do ficheiro de recurso do ficheiro .resX do projecto. Para o fazer, siga estes passos:
  1. Inicie o Visual Studio .NET 2003 ou Visual Studio 2005 .
  2. Abra o projecto que contém a classe de formulário localizada em que recebe a mensagem de erro mencionada na secção "Sintomas".
  3. No Solution Explorer, expanda todas as pastas.
  4. Clique com o botão direito do rato Form1.resX e, em seguida, clique em Propriedades .
  5. Na caixa de diálogo Form1.resX páginas de propriedades , expanda Propriedades de configuração e, em seguida, clique em Geral em Recursos geridos .
  6. Alterar a propriedade Nome do ficheiro de recurso de $(IntDir)/ <placeholder>. Form1.resources para $ (IntDir) / <placeholder>.MyForm .resources e, em seguida, clique em OK .

    Nota MyForm é um marcador de posição para o nome da classe da classe de formulário que é localizada.
  7. Prima CTRL + SHIFT + S para guardar o projecto. Prima CTRL + SHIFT + B, para criar a solução.Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    824495CORRECÇÃO: Recebe uma mensagem de erro "MissingManifestResourceException" quando adiciona um recurso ligado no Visual Studio .NET 2003
  8. Prima F5 para executar a aplicação. Executa a aplicação e o Form1 é apresentado o formulário.
.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Um módulo de código do formulário pode conter várias classes. Quando o projecto é criado, o sistema de compilação tem de decidir que classe deve utilizar para criar o ficheiro de Resources. A estrutura do sistema de compilação do projecto Especifica que a primeira classe do módulo de código é a classe em que o ficheiro .resources se baseia. O ficheiro .resources é nome de acordo com essa classe, não o nome do formulário. Na maioria dos casos, estes dois nomes são iguais. No entanto, se estes nomes são diferentes, receberá a mensagem de erro mencionada na secção "Sintomas".

Quando carrega o formulário em tempo de execução, o método InitializeComponent poderá ter de obter objectos de ficheiro .resources. InitializeComponent procurará o ficheiro .resources Form_Name a assemblagem. Uma vez que o ficheiro .resources Form_Name inicial nunca foi criado ou ligado a assemblagem, a tentativa de obter o ficheiro .resources falhar.

Passos para reproduzir o comportamento

  1. Crie um projecto de aplicação do Windows no Visual Basic .NET ou no Visual Basic 2005, Visual C# .NET ou Visual J#. NET. Form1 é criado pelo predefinido. NOTA: no Visual Studio 2005, receberá a seguinte mensagem de aviso:
    Não não possível adicionar componentes no modo de localização. Seleccione (predefinição) na propriedade Language para regressar ao formulário predefinido e adicionar componentes.
    Nota Tem de alterar o código do Visual Basic 2005. Por predefinição, o Visual Basic cria dois ficheiros para o projecto quando cria um projecto de Windows Forms. Se o formulário é o nome Form1, os dois ficheiros que representam o formulário são denominados Form1.VB e Form1.Designer.vb. Tem de escrever o código no ficheiro Form1.VB. O Windows Forms Designer escreve o código no ficheiro Form1.Designer.vb. O Windows Forms Designer utiliza a palavra-chave parcial para dividir a implementação do Form1 em dois ficheiros separados. Este comportamento impede que o código gerado pelo estruturador a ser intercalados com o código.

    Para obter mais informações sobre novos melhoramentos de idioma do Visual Basic 2005, visite o seguinte Web site da 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 Web MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Adicione um controlo ImageList ao Form1.
  3. Adicione um ficheiro de ícone para o controlo ImageList .
  4. No módulo de código do Form1, adicione o seguinte código antes da definição de Form1: Visual Basic. NET:
    Public Class someClass
    End Class
    					
    Visual C# .NET e Visual J# .NET:
    public class someClass
    {
    }
    					
  5. Crie o projecto. Repare que o projecto cria com êxito.
  6. Execute o projecto. Repare que é apresentada a mensagem de erro mencionada na secção "Sintomas".

Propriedades

Artigo: 318603 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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