MissingManifestResourceException 类

定义

主程序集不包含非特定区域性的资源和适当的附属程序集缺少时引发的异常。

public ref class MissingManifestResourceException : Exception
public ref class MissingManifestResourceException : SystemException
public class MissingManifestResourceException : Exception
public class MissingManifestResourceException : SystemException
[System.Serializable]
public class MissingManifestResourceException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class MissingManifestResourceException : SystemException
type MissingManifestResourceException = class
    inherit Exception
type MissingManifestResourceException = class
    inherit SystemException
[<System.Serializable>]
type MissingManifestResourceException = class
    inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MissingManifestResourceException = class
    inherit SystemException
Public Class MissingManifestResourceException
Inherits Exception
Public Class MissingManifestResourceException
Inherits SystemException
继承
MissingManifestResourceException
继承
MissingManifestResourceException
属性

注解

.NET 应用

在.NET Framework和 .NET Core 应用中,当尝试检索资源失败时,MissingManifestResourceException将引发,因为无法从特定程序集加载中性区域性的资源集。 尽管尝试检索特定资源时会引发异常,但它是由加载资源集而不是查找资源的失败引起的。

备注

有关详细信息,请参阅类主题中的 ResourceManager “处理 MissingManifestResourceException 异常”部分。

异常的主要原因包括:

  • 资源集不是由其完全限定名称标识的。 例如,如果 baseName 调用 ResourceManager.ResourceManager(String, Assembly) 方法中的参数指定没有命名空间的资源集的根名称,但在资源集存储在其程序集中时会为其分配命名空间,则对 ResourceManager.GetString 方法的调用将引发此异常。

    如果嵌入了包含可执行文件中默认区域性资源的 .resources 文件,并且应用将引发该 MissingManifestResourceException资源,则可以使用反射工具(如 IL 反汇编程序 (Ildasm.exe) )来确定资源的完全限定名称。 在 ILDasm 中,双击可执行文件的 MANIFEST 标签以打开 清单 窗口。 资源显示为 .mresource 项,在外部程序集引用和自定义程序集级别属性之后列出。 还可以编译以下简单实用工具,其中列出了程序集中嵌入资源的完全限定名称,其名称作为命令行参数传递给该程序集。

    using System;
    using System.IO;
    using System.Reflection;
    using System.Resources;
    
    public class Example
    {
       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("{0} does not exist.", filename);
             return;
          }   
          
          // Try to load the assembly.
          Assembly assem = Assembly.LoadFrom(filename);
          Console.WriteLine("File: {0}", 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: {0}", resName.Replace(".resources", ""));
    
          Console.WriteLine();
       }
    }
    
    Imports System.IO
    Imports System.Reflection
    Imports System.Resources
    
    Module Example
       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 Module
    
  • 通过资源文件名 (标识资源集,以及其可选命名空间) 及其文件扩展名,而不是单独标识其命名空间和根文件名。 例如,如果命名了中性区域性的资源集GlobalResources,并且你向构造函数的参数ResourceManager.ResourceManager(String, Assembly)提供值 (而不是GlobalResources) baseNameGlobalResources.resources则会引发此异常。

  • 找不到方法调用中标识的区域性特定的资源集,并且无法加载回退资源集。 例如,如果你为英语 (美国) 和俄罗斯创建附属程序集, (俄罗斯) 区域性,但无法为中性区域性提供资源集,则如果你的应用当前区域性是英国 (英国) ,则会引发此异常。

MissingManifestResourceException 使用具有值0x80131532的 HRESULT COR_E_MISSINGMANIFESTRESOURCE。

MissingManifestResourceException 使用支持引用相等性的默认 Equals 实现。

有关实例的初始属性值的列表MissingManifestResourceException,请参阅MissingManifestResourceException构造函数。

备注

建议在主程序集中包含一组中性资源,因此,如果附属程序集不可用,应用不会失败。

通用 Windows 平台 (UWP) 应用

UWP 应用在单个包资源索引 (.pri) 文件中部署多个区域性的资源,包括中性区域性。 因此,在 UWP 应用中,如果找不到首选区域性的资源, MissingManifestResourceException 则会在以下任一条件下引发:

  • 应用不包含 .pri 文件,或者无法打开 .pri 文件。

  • 应用的 .pri 文件不包含给定根名称的资源集。

构造函数

MissingManifestResourceException()

使用默认属性初始化 MissingManifestResourceException 类的新实例。

MissingManifestResourceException(SerializationInfo, StreamingContext)

用序列化数据初始化 MissingManifestResourceException 类的新实例。

MissingManifestResourceException(String)

使用指定的错误消息初始化 MissingManifestResourceException 类的新实例。

MissingManifestResourceException(String, Exception)

使用指定的错误消息和对作为此异常原因的内部异常的引用来初始化 MissingManifestResourceException 类的新实例。

属性

Data

获取键/值对的集合,这些键/值对提供有关该异常的其他用户定义信息。

(继承自 Exception)
HelpLink

获取或设置指向与此异常关联的帮助文件链接。

(继承自 Exception)
HResult

获取或设置 HRESULT(一个分配给特定异常的编码数字值)。

(继承自 Exception)
InnerException

获取导致当前异常的 Exception 实例。

(继承自 Exception)
Message

获取描述当前异常的消息。

(继承自 Exception)
Source

获取或设置导致错误的应用程序或对象的名称。

(继承自 Exception)
StackTrace

获取调用堆栈上的即时框架字符串表示形式。

(继承自 Exception)
TargetSite

获取引发当前异常的方法。

(继承自 Exception)

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetBaseException()

当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根本原因。

(继承自 Exception)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetObjectData(SerializationInfo, StreamingContext)

当在派生类中重写时,用关于异常的信息设置 SerializationInfo

(继承自 Exception)
GetType()

获取当前实例的运行时类型。

(继承自 Exception)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

创建并返回当前异常的字符串表示形式。

(继承自 Exception)

事件

SerializeObjectState
已过时。

当异常被序列化用来创建包含有关该异常的徐列出数据的异常状态对象时会出现该问题。

(继承自 Exception)

适用于

另请参阅