使C#程序脫離.net框架運(yùn)行(非飛信方式)
這幾天看了很多關(guān)于脫離框架運(yùn)行C#程序的文章,千篇一律,都是講飛信方案的,此方案涉及一些法律問(wèn)題,只能自己研究一下,后來(lái)用google美國(guó)網(wǎng)站搜了一把,看了些文章,無(wú)意中發(fā)現(xiàn)mono,又用mono關(guān)鍵字到google中國(guó)搜了一把,已經(jīng)有人實(shí)現(xiàn)控制臺(tái)程序脫離.net框架了。
其實(shí)就是換mono的公共語(yǔ)言運(yùn)行時(shí)來(lái)使用。這樣做的好處是體積小,發(fā)布免安裝。首先,您需要下載mono的最新版。http://ftp./pub/mono/archive/1.9.1/windows-installer/2/mono-1.9.1-gtksharp-2.10.4-win32-2.exe,安裝后,就可以繼續(xù)進(jìn)行了。
1、用Visual Studio創(chuàng)建一個(gè)Windows應(yīng)用程序,假設(shè)叫做WinApp,并添加一個(gè)按鈕。
2、編譯此項(xiàng)目,得到一個(gè)WinApp.exe文件。
3、自己建立一個(gè)文件夾WinApp,其中再建立bin和lib這兩個(gè)文件夾
4、將mono安裝文件夾中的bin和lib子文件夾中需要的文件拷貝至剛才建立的那兩個(gè)文件夾。mono的默認(rèn)安裝位置是:C:\Program Files\Mono-1.9.1
5、將需要運(yùn)行的exe文件放入WinApp文件夾。
6、調(diào)用,可以使用bat批處理來(lái)調(diào)用,bin\mono.exe WinApp.exe。(其實(shí)寫個(gè)VC++的小程序調(diào)用最好,可以我沒(méi)學(xué)過(guò)VC++)
好了,發(fā)個(gè)代碼上來(lái),有興趣的朋友可以研究一下,7zip打包后僅3.26MB,卻實(shí)現(xiàn)了免安裝微軟龐大的框架。此測(cè)試項(xiàng)目我在純凈的虛擬機(jī)和本機(jī)均測(cè)試過(guò),但有個(gè)bug,mono對(duì)中文路徑支持不好,如若有中文路徑,則無(wú)法運(yùn)行。我后來(lái)又試了用C:\Program Files\Mono-1.9.1\bin\mono.exe來(lái)執(zhí)行,則沒(méi)有中文路徑問(wèn)題。我覺(jué)得缺少了哪個(gè)文件,一個(gè)一個(gè)試著拷貝到WinApp文件夾中,再用批處理來(lái)執(zhí)行,還是錯(cuò)誤。后來(lái)干脆將整個(gè)安裝目錄的文件全搬到WinApp目錄中,執(zhí)行批處理還是失敗,可是用C:\Program Files\Mono-1.9.1\bin\mono.exe來(lái)執(zhí)行就是能成功,百思不得其解啊!究竟少了什么東西呢?
博客園單個(gè)文件限制在了1.95MB,我試了好多次不成功,大家到我的CSDN上下載吧,0分資源。
http://download.csdn.net/source/661248