Silverlight 4.0 从xap文件中提取未引用的程序集

Silverlight 4.0 从xap文件中提取未引用的程序集,silverlight-4.0,Silverlight 4.0,我有一个包含未引用程序集的xap文件:b.dll。 这个程序集是手动放在xap文件中的(通过一个后期构建步骤,在这个步骤中,我只是将dll添加到zip(xap)文件中) 现在在运行时,我想访问b.dll并在其上调用CreateInstance 这就是我被困的地方。如何从xap文件中获取b.dll的程序集实例 谢谢大家! 您可以使用下载的压缩流(Xap或其他)初始化StreamResourceInfo对象 然后,您可以使用Application.GetResourceStream使用Uri从该zi

我有一个包含未引用程序集的xap文件:b.dll。 这个程序集是手动放在xap文件中的(通过一个后期构建步骤,在这个步骤中,我只是将dll添加到zip(xap)文件中)

现在在运行时,我想访问b.dll并在其上调用CreateInstance

这就是我被困的地方。如何从xap文件中获取b.dll的程序集实例


谢谢大家!

您可以使用下载的压缩流(Xap或其他)初始化
StreamResourceInfo
对象

然后,您可以使用
Application.GetResourceStream
使用
Uri
从该zip提取文件流。在这种情况下,dll可以加载
AssemblyPart
,然后在其上调用
CreateInstance
:-

 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));

您可以使用下载的zip流(Xap或其他)初始化
StreamResourceInfo
对象

然后,您可以使用
Application.GetResourceStream
使用
Uri
从该zip提取文件流。在这种情况下,dll可以加载
AssemblyPart
,然后在其上调用
CreateInstance
:-

 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));