观察下面这段代码的Silverlight:Silverlight是否有可能在不加载完整程序集的情况下读取程序集清单?
foreach (AssemblyPart ap in Deployment.Current.Parts)
{
var sri = Application.GetResourceStream(new Uri(ap.Source, UriKind.Relative));
var assembly = new AssemblyPart().Load(sri.Stream);
// Do something with the assembly.
}
它遍历所有可用的应用程序组件并执行对他们的东西。这段代码的问题在于,即使只是读取程序集清单,代码也会将完整的程序集加载到进程空间中。
是否有可能以某种方式优化呢?
我也有类似的.NET代码,它使用PostSharp.Core图书馆只是阅读组装体现,而不加载完整的组件(Mono.Cecil能做到的工作也一样)。
在此先感谢所有的好心人那里。
只有一个小问题 - Silverlight平台没有Assembly.ReflectionOnlyLoad方法。 – mark 2010-01-12 14:19:45
确实,它位于'System.Reflection'命名空间中。 Silverlight是建立在.NET平台之上的。 – 2010-01-12 14:32:55
@Paulo,你有没有试过在Silverlight类库中编译你的代码?请尝试,如果你没有,然后相应地改变你的答复。 – mark 2010-01-12 14:40:11