AAuto 新增 dotNet 支持庫,可方便的調(diào)用.Net 組件。
可使用內(nèi)存字符串嵌入.Net組件,DLL可添加到工程內(nèi)嵌資源目錄,可通過標準com接口交互,使用非常方便。
該支持庫代碼開源( 可在標準庫中雙擊查看源碼 )。
1、創(chuàng)建.Net虛擬機
import dotNet;
var clr,err = dotNet.clr( "v2.0" );
2、創(chuàng)建應用程序域
//創(chuàng)建應用程序域( 屬于進程之下,但在線程之上的程序管理容器 )
var appDomain = clr.createAppDomain();
3、引用系統(tǒng)組件,并實例化類對象
//system默認已加載,可通過 appDomain.system 直接引用該程序集
system = appDomain.load("System.Windows.Forms");
var Form = system.CreateInstance( "System.Windows.Forms.Form" )
Form.Show()
應用程序集可放置于應用程序根目錄( 開發(fā)時為工程目錄 ), 或者 "/bin"子目錄下
應用程序根目錄可在創(chuàng)建應用程序域之前使用 clr.AppDomainSetup.ApplicationBase 自行定義
使用 appDomain.loadFile() 則支持直接自內(nèi)存載入程序集,當然也可以是一個普通文件。
這樣添加工程目錄,并設為內(nèi)嵌資源的程序集,在發(fā)布后就不需要再附帶外部dll文件了。
4、 調(diào)用類的靜態(tài)方法
//調(diào)用類的靜態(tài)方法
var ret = appDomain.invokeStaticMember(
"\CSNET2ClassLibrary.dll" //指定程序集,寫路徑或程序集名都可以
,"CSNET2ClassLibrary.CSSimpleObject" //類名稱
,"GetStringLength" //靜態(tài)方法名
,"HelloWorld" //支持不定個數(shù)參數(shù)
);
您可以在快手最新版本中找到上面范例的完整代碼:
范例位置:快手范例->dotNet->加載C#程序集
快手最新版本下載:http://www.ksks6.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 的代碼:
import dotNet.clr;
if( true || !(dotNet.clr("v2.0") ) || ( dotNet.clr("v4.0") ) ){
import win;
import inet.downBox;
if( win.msgboxTest('您的系統(tǒng)未安裝.Net運行庫支持\n繼續(xù)運行本程序需要下載安裝.Net Framework 4.0,\n退出請按取消.',"運行環(huán)境檢測") ){
var downBox = inet.downBox(mainForm,"正在下載 Microsoft .NET Framework 4 Client Profile")
downBox.endProc = function(ret,fileSize,err){
if(!err)
owner.endModal();
}
downBox.download(
"http://download.microsoft.com/download/5/6/2/562A10F9-C9F4-4313-A044-9C94E0A8FAC8/dotNetFx40_Client_x86_x64.exe"
, "/download/IE8-WindowsXP-x86-CHS.exe" )
if( downBox.complete ){
process.execute_wait("/download/IE8-WindowsXP-x86-CHS.exe")
}
}
}