我想在給定其路徑的情況下輸出.winmd文件中的類型。 我從Windows 8 Developer Preview機器上覆制了一個winmd文件到我的開發機器。 我寫了一個小測試應用程序(在C#中,.NET 4.0,而不是4.5),它試圖在運行時加載程序集,給定其路徑,並輸出其中的類型。 雖然程序集已加載,但我嘗試獲取類型時發生異常。無法從.winmd文件獲取類型
下面是代碼:
static void Main(string[] args)
{
if (args.Length != 1) return;
var path = args[0];
if (!System.IO.File.Exists(path))
{
Console.WriteLine("file not found : " + path);
return;
}
var asm = System.Reflection.Assembly.LoadFrom(path); // load successful.
Console.WriteLine("loaded ");
string name = asm.GetName().Name;
Console.WriteLine(name);
System.Type[] types = asm.GetTypes(); // exception occurs here
foreach(var type in types)
{
// output type name
}
}
唯一的例外是類型ReflectionTypeLoadException的。它的Message屬性是:無法加載一個或多個請求的類型。檢索LoaderExceptions 屬性以獲取更多信息。
LoaderExceptions屬性具有基礎異常TypeLoadException。其消息屬性如下: 運行時Impl屬性使用不當。
有人知道爲什麼我不能讀取類型?
謝謝。
注:我知道我使用.NET 4.0。但是,在.NET 4.5(Windows 8預覽版)中,我無法在運行時從文件加載程序集。 Assembly類中沒有這樣做的方法。