Winmdexp.exe (Windows ランタイム メタデータのエクスポート ツール)

Windows ランタイム メタデータ エクスポート ツール (Winmdexp.exe) は、.NET Framework モジュールを、Windows メタデータを含むファイルに変換します。 .NET Framework アセンブリと Windows ランタイム メタデータ ファイルでは同じ物理形式が使用されますが、メタデータ テーブルの内容に違いがあります。つまり、NET Framework アセンブリは自動的に Windows ランタイム コンポーネントとして使用できるわけではありません。 .NET Framework モジュールを Windows ランタイム コンポーネントに変換するプロセスは、"エクスポート" と呼ばれます。 .NET Framework 4.5 と 4.5.1 では、結果として生成される Windows メタデータ (.winmd) ファイルにメタデータと実装の両方が含まれます。

Visual Studio 2013 または Visual Studio 2012 で、C# および Visual Basic の Windows ストアにある Windows ランタイム コンポーネント テンプレートを使用する場合、コンパイラのターゲットは .winmdobj ファイルであり、後続のビルド ステップで Winmdexp.exe が呼び出され、.winmdobj ファイルが .winmd ファイルにエクスポートされます。 Windows ランタイム コンポーネントをビルドする場合は、この方法をお勧めします。 Visual Studio による制御より細かくビルド プロセスを制御する場合は、Winmdexp.exe ファイルを直接使用します。

このツールは、Visual Studio と共に自動的にインストールされます。 ツールを実行するには、、Visual Studio 開発者コマンド プロンプトまたは Visual Studio Developer PowerShell を使用します。

コマンド プロンプトに次のように入力します。

構文

winmdexp [options] winmdmodule  

パラメーター

引数またはオプション 説明
winmdmodule エクスポートするモジュール (.winmdobj) を指定します。 指定できるのは 1 つのモジュールのみです。 このモジュールを作成するには、/target ターゲットと共に winmdobj コンパイラ オプションを使用します。 「-target:winmdobj (C# コンパイラ オプション)」または「-target (Visual Basic)」を参照してください。
/docfile: docfile

/d: docfile
Winmdexp.exe が生成する出力 XML ドキュメント ファイルを指定します。 .NET Framework 4.5 では、出力ファイルは基本的に入力 XML ドキュメント ファイルと同じです。
/moduledoc: docfile

/md: docfile
コンパイラが winmdmodule と共に生成した XML ドキュメント ファイルの名前を指定します。
/modulepdb: symbolfile

/mp: symbolfile
winmdmodule のシンボルを含むプログラム データベース (PDB) ファイルの名前を指定します。
/nowarn: warning 指定した警告番号が使用されなくなります。 warning の場合は、エラー コードの数字部分だけを先行ゼロなしで指定してください。
/out: file

/o: file
出力 Windows メタデータ (.winmd) ファイルの名前を指定します。
/pdb: symbolfile

/p: symbolfile
エクスポートされた Windows メタデータ (.winmd) ファイルのシンボルを含む出力プログラム データベース (PDB) ファイルの名前を指定します。
/reference: winmd

/r: winmd
エクスポート時に参照するメタデータ ファイル (.winmd またはアセンブリ) を指定します。 「\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5」(32 ビット コンピューターでは「\Program Files\...」) にある参照アセンブリを使用する場合は、System.Runtime.dll と mscorlib.dll の両方への参照を含めます。
/utf8output UTF-8 エンコードでメッセージが出力される必要があることを指定します。
/warnaserror+ すべての警告をエラーとして扱うよう指定しています。
@ responsefile オプション (および、必要に応じて winmdmodule) を含む応答 (.rsp) ファイルを指定します。 responsefile の各行に 1 つの引数またはオプションが含まれている必要があります。

Remarks

Winmdexp.exe は、任意の .NET Framework アセンブリを .winmd ファイルに変換するようには設計されていません。 /target:winmdobj オプションでコンパイルされるモジュールが必要で、追加の制限が適用されます。 この中で最も重要な制限は、アセンブリの API サーフェスで公開されるすべての型は必ず Windows ランタイム型であるということです。 詳細については、「C# および Visual Basic での Windows ランタイム コンポーネントの作成」という記事の「Windows ランタイム コンポーネントの宣言型」セクションを参照してください。

C# または Visual Basic で Windows 8.x Store アプリまたは Windows ランタイム コンポーネントを作成する場合は、Windows ランタイムでのプログラミングをより自然にするためのサポートが .NET Framework で提供されています。 これは、記事「Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート」で解説されています。 プロセスでは、一般的に使用される Windows ランタイム型が .NET Framework 型にマップされます。 Winmdexp.exe では、このプロセスが反転され、対応する Windows ランタイム型を使用する API サーフェスが生成されます。 たとえば、IList<T> インターフェイスから構築された型は、Windows ランタイムの IVector<T> インターフェイスから構築された型にマップされます。

関連項目