c# – 卸载CodeDom编译汇编

我有一些C#代码(让我们称之为“脚本”)我正在运行时编译.它使用我的主程序中的一个接口来访问它的功能.一旦编译完成,我有CompilerResults.CompiledAssembly,在这种情况下,我可以CreateInstance(Type).

一旦完成使用脚本,我想完全卸载.根据我的理解,如果我创建一个单独的应用程序域,我只能做到这一点:
Loading DLLs into a separate AppDomain

我有一些与我的实施有关的问题:

>如果我有多个脚本来编译,并且要独立卸载它们,我必须为每个脚本创建单独的应用程序域吗?
>应该使用哪些应用程式的网域名称? GUID是一个好主意吗?有什么名字我应该避免可能会冲突吗?
>如果程序集在一个单独的应用程序域中,访问主程序中的界面是否有任何问题?在编译之前,我正在做ReferencedAssemblies.Add(typeof(Interface).Assembly.Location).
>我可以使用CompilerParameters GenerateInMemory = true,还是要保存在某个地方?

解决方法

答案顺序:

>是的,如果要独立卸载,您需要单独的应用程序域.
>用什么如果您可以将其识别回脚本,那么可能会帮助您进行调试,但是对于执行的线程来说,这将更为真实.
>只要您将域设置的基本路径设置为您自己的基础路径即可.

AppDomainSetup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;>不,你不需要保存它,听起来不会让你受益.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...