zoukankan      html  css  js  c++  java
  • 在.NET中实现脚本引擎过程简述及心得

    近期在维护公司一个项目时,需要用到.NET动态编译脚本引擎功能。于是在搜索网上相关资料及项目中已有代码的基础上,对.NET脚本引擎实现过程进行了分析与尝试。

    概念:程序域是一个在进程中用于将一组程序集与另一组程序集进行隔离的概念,可理解为程序集逻辑容器。微软为创建程序域、将程序集添加到程序域分别提供了:AppDomain.CreateDomain、appDomain.CreateInstanceFromAndUnwrap等方法。但是在程序域卸载程序集上,却没有提供方法。因此,若要实现加载动态脚本、运行脚本、卸载脚本,所需要的步骤应该为:

    1。创建脚本,并编译为程序集;创建程序域。

    2。将编译成功的程序集加载到新建的程序域中,并调用程序集中的相关方法。

    3。由于微软没有提供直接卸载程序域的方法,因此在调用脚本运行完成后,必须卸载该程序域,以此卸载其所包含的程序集。

    注意事项:

    1。如果在编写的脚本中需要引用到某某自定义的程序集。似乎可以通过类似于this.AddReference("System.dll");语句进行添加。但是必须注意的是,网站型的项目中相关语句必须写程序集的绝对路径。具体路径可在程序运行时获取并传入。

    2。动态脚本运行后返回对象的类型定义必须继承MarshalByRefObject。

    3。调用的动态脚本中的方法必须是static型的。

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    dropdownlist加Js 实现联动
    SQL复制一个字段的值
    SQL Broker SET ENABLE_BROKER 一直在执行,卡在那里解决方案
    重新注册asp.net
    C#对PostgreSQL的操作
    centos 6.5 解压 zip
    [javascript] Detect flash installed
    [javascript] 用js得到文件大小
    [javascript]Preserving Scope in JavaScript (this)
    [css]CSS hack:区分IE6,IE7,firefox
  • 原文地址:https://www.cnblogs.com/jizhong/p/1755236.html
Copyright © 2011-2022 走看看