3

我需要枚举物理上位于 Silverlight dll 中的某个命名空间中的类型。但我必须在服务器(asp.net 应用程序)上进行。

我有 xap 文件,我可以用 zip 读取它并获取我需要的 dll。

但是,我不想将该程序集加载到内存中(我认为它可能不会加载,因为它是 Silverlight 应用程序),只要我记得加载的程序集不能被卸载(不想为了获得几个字符串而浪费服务器内存)。

有任何想法吗?

编辑:ReflectionOnlyLoad 不适用于 Silverlight 程序集。还有其他想法吗?

4

4 回答 4

2

你应该使用:

Assembly.ReflectionOnlyLoad(string assemblyString)

这将在特殊上下文中加载程序集(没有依赖关系)。您不能执行任何方法。您可以卸载此程序集,而无需卸载完整的 AppDomain。

MSDN:Assembly.ReflectionOnlyLoad

于 2012-09-28T12:20:33.103 回答
1

您可以使用Mono.Cecil从您的 .NET 应用程序中检查 Silverlight 程序集(或不同的 .NET 运行时程序集)。

于 2012-09-28T13:04:20.850 回答
0

试试 ReflectionOnlyLoad。您可以传递字符串(程序集文件的路径)或 byte[](程序集的 COFF 图像 - 应该是解压缩程序集得到的结果 byte[])。

于 2012-09-28T12:18:01.223 回答
0

您将需要加载它,尽管您需要将其加载到 silverlight 中并且需要 silverlight 代码来进行枚举。有利的一面是,由于您需要通过 COM 互操作加载它,因此在您拆除 SL 实例时应该清理它。

于 2012-09-28T12:20:08.570 回答