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
属性

注釈

MissingManifestResourceException 例外は、.NET アプリと UWP アプリのさまざまな理由でスローされます。

.NET アプリ

.NET アプリでは、ニュートラル カルチャのリソース セットを特定のアセンブリから読み込めなかったためにリソースの取得が失敗すると、MissingManifestResourceException がスローされます。 特定のリソースを取得しようとすると例外がスローされますが、これはリソースを見つけられないためではなく、リソースセットを読み込めないことに起因します。

Note

詳細については、 ResourceManager クラストピックの「MissingManifestResourceException 例外の処理」セクションを参照してください。

例外の主な原因は次のとおりです。

  • リソース セットは、その完全修飾名で識別されません。 たとえば、baseName メソッドの呼び出しのResourceManager.ResourceManager(String, Assembly) パラメーターが、名前空間を持たないリソース セットのルート名を指定しているが、そのアセンブリに格納されるときにリソース セットに名前空間が割り当てられている場合、ResourceManager.GetString メソッドの呼び出しによってこの例外がスローされます。

    既定のカルチャのリソースを含む .resources ファイルを実行可能ファイルに埋め込み、アプリが MissingManifestResourceExceptionをスローしている場合は、 IL 逆アセンブラー (Ildasm.exe) などのリフレクション ツールを使用して、リソースの完全修飾名を決定できます。 ILDasm で、実行可能ファイルの MANIFEST ラベルをダブルクリックして 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 という名前が付けられ、GlobalResources.resources コンストラクターの GlobalResources パラメーターに (baseName ではなく) ResourceManager.ResourceManager(String, Assembly)の値を指定すると、この例外がスローされます。

  • メソッド呼び出しで識別されるカルチャ固有のリソース セットが見つからないので、フォールバック リソース セットを読み込めません。 たとえば、英語 (米国) とロシア (ロシア) のカルチャ用にサテライト アセンブリを作成しても、ニュートラル カルチャのリソース セットを指定できない場合、アプリの現在のカルチャが英語 (英国) の場合、この例外がスローされます。

MissingManifestResourceException は、値が0x80131532を持つ HRESULT COR_E_MISSINGMANIFESTRESOURCEを使用します。

MissingManifestResourceException では、参照の等価性をサポートする既定の Equals 実装が使用されます。

MissingManifestResourceExceptionのインスタンスの初期プロパティ値の一覧については、MissingManifestResourceExceptionコンストラクターを参照してください。

Note

サテライト アセンブリが使用できない場合にアプリが失敗しないように、メイン アセンブリにはニュートラル なリソース セットを含めるようにすることをお勧めします。

コンストラクター

名前 説明
MissingManifestResourceException()

既定のプロパティを使用して、 MissingManifestResourceException クラスの新しいインスタンスを初期化します。

MissingManifestResourceException(SerializationInfo, StreamingContext)
古い.

シリアル化されたデータから MissingManifestResourceException クラスの新しいインスタンスを初期化します。

MissingManifestResourceException(String, Exception)

指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、 MissingManifestResourceException クラスの新しいインスタンスを初期化します。

MissingManifestResourceException(String)

指定したエラー メッセージを使用して、 MissingManifestResourceException クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
Data

例外に関する追加のユーザー定義情報を提供するキーと値のペアのコレクションを取得します。

(継承元 Exception)
HelpLink

この例外に関連付けられているヘルプ ファイルへのリンクを取得または設定します。

(継承元 Exception)
HResult

特定の例外に割り当てられるコード化された数値である HRESULT を取得または設定します。

(継承元 Exception)
InnerException

現在の例外の原因となった Exception インスタンスを取得します。

(継承元 Exception)
Message

現在の例外を説明するメッセージを取得します。

(継承元 Exception)
Source

エラーの原因となるアプリケーションまたはオブジェクトの名前を取得または設定します。

(継承元 Exception)
StackTrace

呼び出し履歴のイミディエイト フレームの文字列表現を取得します。

(継承元 Exception)
TargetSite

現在の例外をスローするメソッドを取得します。

(継承元 Exception)

メソッド

名前 説明
Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetBaseException()

派生クラスでオーバーライドされた場合、1 つ以上の後続の例外の根本原因である Exception を返します。

(継承元 Exception)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)
古い.

派生クラスでオーバーライドされた場合は、例外に関する情報を使用して SerializationInfo を設定します。

(継承元 Exception)
GetType()

現在のインスタンスのランタイム型を取得します。

(継承元 Exception)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

現在の例外の文字列形式を作成して返します。

(継承元 Exception)

イベント

名前 説明
SerializeObjectState
古い.

例外に関するシリアル化されたデータを含む例外状態オブジェクトを作成するために例外がシリアル化されるときに発生します。

(継承元 Exception)

適用対象

こちらもご覧ください