我想“热”将一些预打包的组件加载到一个单独的AppDomain中,然而事情是我不知道入口点类的名称甚至是汇编文件。我需要找到这个入口点,以便我可以运行一些初始化例程。
所以我打算做的是在所有文件上运行ReflectionOnlyLoad并找到遵循某个约定的文件,即。注释/实现某个界面等。
问题是,如果我一遍又一遍地从主AppDomain运行ReflectionOnlyLoad,我会开始泄漏内存吗?如果这不能从主应用程序域运行,我的选项是什么,因为我再也不知道入口点在哪里。
此外,还有任何关于使用ReflectionOnlyLoad的细微之处的其他信息。
答案 0 :(得分:3)
我推荐Mono.Cecil
。这是一个可以在.net上使用的简单程序集(它不需要Mono运行时)。它提供了一个API来将程序集作为数据加载,并且运行良好。我发现API很容易使用,并且它在使用仅反射加载时遇到的任何问题都没有。
您还可以使用CCI,这是MS提供的一个开源项目,它提供了一个汇编阅读器。
答案 1 :(得分:1)
ReflectionOnlyLoad无法解决您的问题,请参阅docs
为什么不执行在新AppDomain中查找入口点等的代码?
答案 2 :(得分:0)
无法通过dll反映出来。即使只有反射加载,该类型仍然适用于主AppDomain。
2解决方案:
我选择了(1),因为它是最明智的。
(2)我必须通过2个单独的代理才能向实际的远程对象发出命令,或者我需要比我喜欢的更紧密地耦合接口。更不用说是代码的痛苦。