我有一个包含未引用程序集的xap文件:b.dll。 这个程序集手动放入xap文件中(通过post build步骤,我只需将dll添加到zip(xap)文件中)。
现在在运行时我想访问b.dll并在其上调用CreateInstance。
这是我被困的地方。如何从xap文件中获取b.dll的程序集实例?
谢谢!
答案 0 :(得分:1)
您可以使用下载的zip流(Xap或其他)初始化StreamResourceInfo
对象。
然后,您可以使用Application.GetResourceStream
使用Uri
从该zip文件中提取文件流。在这种情况下,可以使用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));