2013-05-02 24 views
2

我想創建一個工具,接受一個。 winmd文件(Windows運行時組件)並生成一個C#DLL(包含組件中定義的所有公共類型)。winmd自動轉換爲DLL

據我所知,標準的.NET Reflection APIs不能在.winmd文件上工作,並且必須使用Metadata Unmanaged APIs來訪問這些信息。

問題是 - 是否可以從Metadata API檢索的信息中構建C#程序集?

或更好的是 - 是否有一個工具(如TLBIMP),已經完成這項工作或類似的東西?

+0

只需使用體面的反彙編程序。反編譯器正常編譯爲C#可以正常工作。添加.winmd文件,同時添加Windows.winmd。右鍵單擊+導出源代碼。 – 2013-05-02 23:12:51

+0

當然,winmd文件中不會有任何代碼,因爲winmd文件只是元數據,但您可能能夠看到通過intellisense獲得的方法定義。 – 2013-05-03 04:54:57

+0

你想做什麼?這可能有助於改變答案。 – 2013-05-03 04:56:16

回答

1

Windows元數據文件不包含任何代碼 - 它只是一組類型定義。而一個winmd文件是一個ECMA 335程序集,因此它已經是一個C#DLL(將它從.winmd重命名爲.dll)。

+0

這不起作用。不能像正常程序集一樣加載winmd(獲取NotSupportedException)。 – 2013-05-03 07:58:12

+0

我會從上面重複我的問題:你想做什麼? – 2013-05-03 17:30:15