2010-07-08 32 views
1

我有一個包含未引用程序集的bap文件:b.dll。 這個程序集手動放在xap文件中(通過後期構建步驟,其中我只是將dll添加到zip(xap)文件)。從xap文件中提取未引用的程序集

現在在運行時我想訪問b.dll並在其上調用CreateInstance。

這是我卡住的地方。我如何從xap文件獲取b.dll的Assembly實例?

謝謝!

回答

1

您可以使用下載的zip流(Xap或其他)初始化一個StreamResourceInfo對象。

然後,您可以使用Application.GetResourceStreamUri獲取該文件的文件流。在這種情況下,然後可以加載AssemblyPart,然後調用其上的CreateInstance的dll: -

WebClient client = new WebClient() 
client.OpenReadCompleted += (s, args) => 
{ 
    StreamResourceInfo zip = new StreamResourceInfo(args.Result, "application/zip"); 
    StreamResourceInfo dll = Application.GetResourceStream(zip, new Uri("b.dll", UriKind.Relative)); 
    AssemblyPart assemblyPart = new AssemblyPart(); 
    Assembly assembly = assemblyPart.Load(dll.Stream); 

    _someClassFromB = assembly.CreateInstance("b.SomeClass"); 
}; 
client.OpenReadAsync(new Uri("your.xap", UriKind.Relative)); 
相關問題