从应用程序域中删除程序集
本文关键字:删除程序 程序集 删除 应用程序域 | 更新日期: 2023-09-27 18:15:40
所以我试图从我的Thread.GetDomain().GetAssemblies()
区域。
到目前为止,我在网上看了一些解释,但还是没能弄清楚。
这是我目前得到的
AppDomain tempD = Thread.GetDomain();
tempD.DoCallBack(LoaderCallback);
AppDomain.Unload(tempD);
System.IO.File.Delete(assemblyName);
private static void LoaderCallback()
{
Assembly.ReflectionOnlyLoad("myAssembly");
//byte[] raw = System.IO.File.ReadAllBytes(test);
//Assembly yacsi = Assembly.Load(raw);
//((IScript)yacsi.CreateInstance("Script")).Go();
}
到目前为止,我一直在玩这个概念,但我正在努力建立连接,因为Thread.GetDomain();
不包含Unload
命令
我也无法尝试这部分((IScript)yacsi.CreateInstance("Script")).Go()
,因为我不知道汇编IScript是什么,也不知道在"脚本"文本部分放置什么
如有任何想法,我将不胜感激
要添加在顶部@RobertHarvey的评论,也退一步,你要做的是创建一个单独的AppDomain
和加载你的程序集到它。之后,您可以将打算使用的各种类型编组到您的域中。
处理完它们后,可以卸载应用程序域,从而摆脱程序集。
您应该注意到域间实例封送是通过. net Remoting完成的,因此您可能希望使用远程处理租约策略,其中包括封送对象生命周期的时间值。修改租期的原因是,如果一个封送实例根本没有被调用/使用,它将在预定义的一段时间后过期。因此,您可能希望避免一次又一次地重新封送实例,而只是延长它们在域中的生命周期。
我认为这是一个很好的示例,展示了如何将程序集加载到新的AppDomain
中并卸载它。还有很多其他的例子。
只要你知道这个过程应该是什么,找到它的代码是很简单的。