1
我有一個包含未引用程序集的bap文件:b.dll。 這個程序集手動放在xap文件中(通過後期構建步驟,其中我只是將dll添加到zip(xap)文件)。從xap文件中提取未引用的程序集
現在在運行時我想訪問b.dll並在其上調用CreateInstance。
這是我卡住的地方。我如何從xap文件獲取b.dll的Assembly實例?
謝謝!
我有一個包含未引用程序集的bap文件:b.dll。 這個程序集手動放在xap文件中(通過後期構建步驟,其中我只是將dll添加到zip(xap)文件)。從xap文件中提取未引用的程序集
現在在運行時我想訪問b.dll並在其上調用CreateInstance。
這是我卡住的地方。我如何從xap文件獲取b.dll的Assembly實例?
謝謝!
您可以使用下載的zip流(Xap或其他)初始化一個StreamResourceInfo
對象。
然後,您可以使用Application.GetResourceStream
從Uri
獲取該文件的文件流。在這種情況下,然後可以加載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));