1

我已经成功创建了一个继承自 MarshallByRefObject 的类。

上面的类还实现了一个接口,并从主 AppDomain 远程调用。还创建了 DTO 来传递信息。

我已经从调试器中验证了远程类和调用域上远程加载的程序集没有被加载到主 AppDomain 中。同样,远程类型/程序集没有渗入主 AppDomain,通过 Debug Watch 验证到AppDomain.CurrentDomain.GetAssemblies().

AppDomain.CurrentDomain.GetAssemblies().Count() //From inside the remote object
121
AppDomain.CurrentDomain.GetAssemblies().Count() //At the client, after RPC call.
13

然后远程/临时域被卸载。

但是,我仍然无法删除在远程域中读取的任何 dll,我错过了什么?

我还尝试了以下变化:

AppDomain.CurrentDomain.Load(File.ReadAllBytes(_.FullName))

Assembly.LoadFrom(_.FullName)

无论我使用哪一个,文件仍然被锁定,尽管据我所知,程序集是远程加载和卸载的。

4

0 回答 0