加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 卸载CodeDom编译汇编

发布时间:2020-12-15 03:43:55 所属栏目:百科 来源:网络整理
导读:我有一些C#代码(让我们称之为“脚本”)我正在运行时编译.它使用我的主程序中的一个接口来访问它的功能.一旦编译完成,我有CompilerResults.CompiledAssembly,在这种情况下,我可以CreateInstance(Type). 一旦完成使用脚本,我想完全卸载.根据我的理解,如果我创
我有一些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;>不,你不需要保存它,听起来不会让你受益.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读