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) 檔案同時包含元數據和實作。
當您使用 [Windows 執行階段元件] 範本時 (在 Visual Studio 2013 或 Visual Studio 2012 中位於 C# 和 Visual Basic 的 [Windows 市集] 底下),編譯器目標是 .winmdobj 檔案,而後續建置步驟會呼叫 Winmdexp.exe 將 .winmdobj 檔案匯出到 .winmd 檔案。 這是建置 Windows 執行階段元件的建議方式。 如果您想要更充分掌控建置流程,超越 Visual Studio 所提供的範圍,請直接使用 Winmdexp.exe。
此工具會自動與 Visual Studio 一起安裝。 若要執行此工具,請使用 Visual Studio 開發人員命令提示字元或 Visual Studio Developer PowerShell。
在命令提示字元上鍵入下列字行:
語法
winmdexp [options] winmdmodule
參數
引數或選項 | 描述 |
---|---|
winmdmodule |
指定要匯出的模組 (.winmdobj)。 只允許一個模組。 若要建立這個模組,請使用 /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 |
指定式資料庫 (PDB) 檔名稱,該檔案包含 winmdmodule 的符號。 |
/nowarn: warning |
隱藏指定的警告編號。 對於 warning,僅提供錯誤碼的數字部分,不包含前置零。 |
/out: file /o: file |
指定輸出 Windows 中繼資料 (.winmd) 檔的名稱。 |
/pdb: symbolfile /p: symbolfile |
指定將包含所匯出 Windows 中繼資料 (.winmd) 檔之符號的輸出程式資料庫 (PDB) 檔 (PDB) 名稱。 |
/reference: winmd /r: winmd |
指定匯出期間參考的中繼資料檔 (.winmd 或組件)。 如果您在 “\Program Files (x86)\Reference Assemblies\Microsoft\Framework\中使用參考元件。NETCore\v4.5“ (”\Program Files\...”在32位電腦上,包含System.Runtime.dll和mscorlib.dll的參考。 |
/utf8output |
指定應該採用 UTF-8 編碼的輸出訊息。 |
/warnaserror+ |
指定應該將所有警告視為錯誤。 |
@ responsefile |
指定包含選項的回應檔 (.rsp) (以及選擇性的 winmdmodule )。 responsefile 中的每一行都應該包含單一引數或選項。 |
備註
Winmdexp.exe 的設計並不是將任意 .NET Framework 組件轉換成 .winmd 檔案。 它需要的是使用 /target:winmdobj
選項編譯的模組,並且適用其他限制。 這些限制中最重要的是,組件的 API 介面中公開的所有型別都必須是 Windows 執行階段型別。 如需詳細資訊,請參閱在 C# 和 Visual Basic 中建立 Windows 執行階段 元件一文中的<宣告 Windows 執行階段 元件>一節。
當您使用 C# 或 Visual Basic 撰寫 Windows 8.x 市集應用程式或 Windows 執行階段 元件時,.NET Framework 會提供支援,讓程式設計更自然 Windows 執行階段。 這會在適用於 Windows 市集應用程式和 Windows 執行階段的 .NET Framework 支援文章中討論。 在過程中,有些常用的 Windows 執行階段型別會對應至 .NET Framework 型別。 Winmdexp.exe 會將這個過程反轉,並產生 API 介面來使用對應的 Windows 執行階段型別。 例如,從IList<T>介面建構的類型會對應至從 Windows 執行階段 IVector<T> 介面建構的類型。