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

c# – 在相同的程序集空间中动态生成模块

发布时间:2020-12-15 17:15:45 所属栏目:百科 来源:网络整理
导读:考虑我有一个程序在运行,应该执行以下操作 – 应该从文本文件中读取一些代码并在其自己的Assembly空间中执行它,以便正在执行的新代码可以访问已经运行的代码的所有组件. 怎么可能?请帮忙. 解决方法 通过汇编空间,你的意思是AppDomain? 您可能希望查看IronP
考虑我有一个程序在运行,应该执行以下操作 –
应该从文本文件中读取一些代码并在其自己的Assembly空间中执行它,以便正在执行的新代码可以访问已经运行的代码的所有组件.
怎么可能?请帮忙.

解决方法

通过汇编空间,你的意思是AppDomain?

您可能希望查看IronPython.作为脚本语言,它更适合在运行时动态添加到程序中.

除此以外:

您可以通过坐在System.dll中的Microsoft.CSharp.CSharpCodeProvider访问C#(和VB.NET)编译器.

您可以使用它将该文本文件编译为单独的dll(可能在内存中).确保在编译时添加当前正在执行的程序集作为参考.然后你可以

>将程序集加载到当前正在执行的AppDomain中.这样,它就可以访问应用程序中的所有对象.但是,您无法再次卸载代码.你必须卸载整个AppDomain(即你的应用程序)
>将程序集加载到单独的AppDomain中.您必须通过远程处理(或其他进程中的通信方法)显式提供对某些对象的访问,但是您可以在文本文件更改时卸载/替换代码.

无论哪种方式,您都必须使用反射来调用动态加载的代码.

(编辑:李大同)

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

    推荐文章
      热点阅读