Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este artigo fornece observações complementares à documentação de referência para esta API.
Uma exceção MissingManifestResourceException é lançada por diferentes motivos em aplicativos .NET do que em aplicativos UWP.
Aplicativos .NET
Em aplicações .NET, MissingManifestResourceException é lançado quando a tentativa de recuperar um recurso falha porque o conjunto de recursos para a cultura neutra não pôde ser carregado de um assembly específico. Embora a exceção seja lançada quando você tenta recuperar um recurso específico, ela é causada pela falha ao carregar o conjunto de recursos em vez da falha em localizar o recurso.
Observação
Para obter informações adicionais, consulte a seção "Manipulando uma exceção MissingManifestResourceException" no tópico da classe ResourceManager.
As principais causas da exceção incluem o seguinte:
O conjunto de recursos não é identificado pelo seu nome totalmente qualificado. Por exemplo, se o parâmetro
baseNamena chamada para o método ResourceManager.ResourceManager(String, Assembly) especificar o nome raiz do conjunto de recursos sem um namespace, mas o conjunto de recursos receber um namespace quando for armazenado em seu assembly, a chamada para o método ResourceManager.GetString lançará essa exceção.Se você incorporou o arquivo .resources que contém os recursos da cultura padrão em seu executável e seu aplicativo está lançando um MissingManifestResourceException, você pode usar uma ferramenta de reflexão, como o IL Disassembler (Ildasm.exe) para determinar o nome totalmente qualificado do recurso. Em ILDasm, clique duas vezes no rótulo MANIFEST do executável para abrir a janela MANIFEST. Os recursos aparecem como itens
.mresourcee são listados após referências de assemblies externos e atributos personalizados ao nível de assembleia. Você também pode compilar o seguinte utilitário simples, que lista os nomes totalmente qualificados de recursos incorporados no assembly cujo nome é passado para ele como um parâmetro de linha de comando.using System; using System.IO; using System.Reflection; public class Example0 { public static void Main() { if (Environment.GetCommandLineArgs().Length == 1) { Console.WriteLine("No filename."); return; } string filename = Environment.GetCommandLineArgs()[1].Trim(); // Check whether the file exists. if (! File.Exists(filename)) { Console.WriteLine($"{filename} does not exist."); return; } // Try to load the assembly. Assembly assem = Assembly.LoadFrom(filename); Console.WriteLine($"File: {filename}"); // Enumerate the resource files. string[] resNames = assem.GetManifestResourceNames(); if (resNames.Length == 0) Console.WriteLine(" No resources found."); foreach (var resName in resNames) Console.WriteLine($" Resource: {resName.Replace(".resources", "")}"); Console.WriteLine(); } }Imports System.IO Imports System.Reflection Imports System.Resources Module Example3 Public Sub Main() If Environment.GetCommandLineArgs.Length = 1 Then Console.WriteLine("No filename.") Exit Sub End If Dim filename As String = Environment.GetCommandLineArgs(1).Trim() ' Check whether the file exists. If Not File.Exists(filename) Then Console.WriteLine("{0} does not exist.", filename) Exit Sub End If ' Try to load the assembly. Dim assem As Assembly = Assembly.LoadFrom(filename) Console.WriteLine("File: {0}", filename) ' Enumerate the resource files. Dim resNames() As String = assem.GetManifestResourceNames() If resNames.Length = 0 Then Console.WriteLine(" No resources found.") End If For Each resName In resNames Console.WriteLine(" Resource: {0}", resName.Replace(".resources", "")) Next Console.WriteLine() End Sub End ModuleVocê identifica o conjunto de recursos por seu nome de arquivo de recurso (junto com seu namespace opcional) e sua extensão de arquivo, em vez de apenas por seu namespace e nome de arquivo raiz. Por exemplo, essa exceção é lançada se o conjunto de recursos da cultura neutra for chamado
GlobalResourcese você fornecer um valor deGlobalResources.resources(em vez deGlobalResources) para o parâmetrobaseNamedo construtor ResourceManager.ResourceManager(String, Assembly).O conjunto de recursos específicos da cultura identificado em uma chamada de método não pode ser encontrado e o conjunto de recursos de fallback não pode ser carregado. Por exemplo, se você criar assemblies de satélite para as culturas inglesa (Estados Unidos) e russa (russa), mas não conseguir fornecer um conjunto de recursos para a cultura neutra, essa exceção será lançada se a cultura atual do seu aplicativo for inglês (Reino Unido).
MissingManifestResourceException usa o COR_E_MISSINGMANIFESTRESOURCEHRESULT , que tem o valor 0x80131532.
MissingManifestResourceException usa a implementação padrão de Equals, que suporta a igualdade de referência.
Para obter uma lista dos valores iniciais de propriedade de uma instância de MissingManifestResourceException, consulte os construtores de MissingManifestResourceException.
Observação
Recomendamos que você inclua um conjunto neutro de recursos em seu assembly principal, para que seu aplicativo não falhe se um assembly satélite não estiver disponível.
Aplicativos da Plataforma Universal do Windows (UWP)
Os aplicativos UWP implantam recursos para várias culturas, incluindo a cultura neutra, em um único arquivo de índice de recursos de pacote (.pri). Como resultado, em um aplicativo UWP, se os recursos para a cultura preferencial não puderem ser encontrados, o MissingManifestResourceException será lançado sob uma das seguintes condições:
- O aplicativo não inclui um arquivo .pri ou o arquivo .pri não pôde ser aberto.
- O arquivo .pri do aplicativo não contém um conjunto de recursos para o nome de raiz fornecido.