c# – 卸载CodeDom编译汇编

c# – 卸载CodeDom编译汇编,第1张

概述我有一些C#代码(让我们称之为“脚本”)我正在运行时编译.它使用我的主程序中的一个接口来访问它的功能.一旦编译完成,我有CompilerResults.CompiledAssembly,在这种情况下,我可以CreateInstance(Type). 一旦完成使用脚本,我想完全卸载.根据我的理解,如果我创建一个单独的应用程序域,我只能做到这一点: Loading DLLs into a separa 我有一些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;>不,你不需要保存它,听起来不会让你受益.

总结

以上是内存溢出为你收集整理的c# – 卸载CodeDom编译汇编全部内容,希望文章能够帮你解决c# – 卸载CodeDom编译汇编所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存