快手新增dotNet支持库,可方便的调用.Net组件
AAuto 新增 dotNet 支持库,可方便的调用.Net 组件。
可使用内存字符串嵌入.Net组件,DLL可添加到工程内嵌资源目录,可通过标准com接口交互,使用非常方便。
该支持库代码开源( 可在标准库中双击查看源码 )。
1、创建.Net虚拟机
import dotNet;
var clr,err = dotNet.clr( "v2.0" );
2、创建应用程序域
//创建应用程序域( 属于进程之下,但在线程之上的程序管理容器 )
var appDomain = clr.createAppDomain();
3、引用系统组件,并实例化类对象
//system默认已加载,可通过 appDomain.system 直接引用该程序集
system = appDomain.load("System.Windows.Forms");
var Form = system.CreateInstance( "System.Windows.Forms.Form" )
Form.Show()
应用程序集可放置于应用程序根目录( 开发时为工程目录 ), 或者 "/bin"子目录下
应用程序根目录可在创建应用程序域之前使用 clr.AppDomainSetup.ApplicationBase 自行定义
使用 appDomain.loadFile() 则支持直接自内存载入程序集,当然也可以是一个普通文件。
这样添加工程目录,并设为内嵌资源的程序集,在发布后就不需要再附带外部dll文件了。
4、 调用类的静态方法
//调用类的静态方法
var ret = appDomain.invokeStaticMember(
"CSNET2ClassLibrary.dll" //指定程序集,写路径或程序集名都可以
,"CSNET2ClassLibrary.CSSimpleObject" //类名称
,"GetStringLength" //静态方法名
,"HelloWorld" //支持不定个数参数
);
您可以在快手最新版本中找到上面范例的完整代码:
范例位置:快手范例->dotNet->加载C#程序集
快手最新版本下载:http://www.cr173.com/soft/14194.html
C#类添加下面的代码即可支持com接口
[ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch)]
using System.Runtime.InteropServices;
namespace CSNET2ClassLibrary
{
[ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch)]
public class CSSimpleObject
{
public CSSimpleObject()
{ }
}
}
附: Microsoft .NET Framework 4 Client Profile 独立安装程序
下面是自动检测并安装.Net 4.0 Client Profile 的代码: