日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使C#程序脫離.net框架運(yùn)行(非飛信方式)

 看見(jiàn)就非常 2012-04-20

使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

0
0
(請(qǐng)您對(duì)文章做出評(píng)價(jià))
博主前一篇:C#中將dll匯入exe,并加殼
博主后一篇:SQL語(yǔ)句中的單引號(hào)處理以及模糊查詢
posted on 2008-10-02 03:53 清晨陽(yáng)光 閱讀(4881) 評(píng)論(8) 編輯 收藏

評(píng)論:
#1樓 2008-10-02 09:58 | htqx[未注冊(cè)用戶]
下一代.net 4應(yīng)該會(huì)解決這個(gè)問(wèn)題,發(fā)布一個(gè)可定制的子集。
 回復(fù) 引用   
#2樓 2008-10-02 10:16 | clefoo      
很好
收藏了

 回復(fù) 引用 查看   
#3樓 2008-10-02 10:23 | clefoo      
這個(gè)我們不知道需要什么文件啊
LZ能不能說(shuō)明點(diǎn)

 回復(fù) 引用 查看   
#4樓[樓主] 2008-10-02 11:43 | 清晨陽(yáng)光      
至少我這個(gè)例子不缺少文件了,如果增加新的東西,請(qǐng)到mono安裝目錄lib\mono\gac里面找一下,有很多System開(kāi)頭的。簡(jiǎn)單的項(xiàng)目能應(yīng)付,要是非常復(fù)雜,就說(shuō)不來(lái)了,呵呵!
微軟Visaul Studio 2008 SP1 發(fā)布后,出了一個(gè)叫做Client Profile的東西,是.Net Framework的精簡(jiǎn)子集,客戶端據(jù)說(shuō)安裝后大小為27MB,沒(méi)裝2008,不知道咋用。

 回復(fù) 引用 查看   
#5樓 2009-03-20 20:18 | 滄海月明      
.net 開(kāi)發(fā)的軟件的發(fā)布真是一個(gè)大問(wèn)題, 2.0 還好只有20多M, 3.0需要50多M,
3.5基本上網(wǎng)絡(luò)分發(fā)不太可行了. Client Profile也用過(guò), 只能減少客戶端的安裝內(nèi)容,不能減少下載內(nèi)容.
mono倒是個(gè)好思路, 據(jù)說(shuō)mono有個(gè)AOT編譯選項(xiàng),可以編譯為原生代碼, 不知道能否在windows下使用.

 回復(fù) 引用 查看   
#6樓 2010-09-12 09:06 | 悠哉悠哉      
.NET程序脫離框架進(jìn)階 之 Embedding Mono  使用MONO讓.NET程序脫離.NET Framework運(yùn)行是個(gè)不錯(cuò)的方法,網(wǎng)上已有很多介紹。但是MONO運(yùn)行.NET程序也有讓人郁悶的地方,比如你只能使用“mono 你的NET程序名.exe”這樣的命令運(yùn)行你的.NET程序(當(dāng)然,你也可以用C++寫個(gè)程序來(lái)調(diào)用。),雖然也不復(fù)雜,但是程序運(yùn)行時(shí)MONO黑乎乎的命令行窗口實(shí)在礙眼。

  前些日子看了下MONO官方Embedding Mono介紹,于是動(dòng)手寫了個(gè),用起來(lái)爽多了,看下面C++代碼:
#include "stdafx.h"
#include <glib/glib.h>
#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/environment.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc, char* argv[])
{
int retval;
char *file;
file = ".\\demo.exe"; // .NET程序路徑
//argv[0] = file;
mono_set_dirs(".\\lib", NULL);
MonoDomain *domain;
MonoAssembly *assembly;
domain = mono_jit_init (file);
assembly = mono_domain_assembly_open (domain, file);
if (!assembly) exit (2);
mono_jit_exec (domain, assembly, argc, argv);
retval = mono_environment_exitcode_get ();
mono_jit_cleanup (domain);
return retval;
}
  哎,不會(huì)寫文章,直接上源碼下載地址:http://www./file/0dcf46622/EmbeddingMono.zip.html
  壓縮包中包含精簡(jiǎn)過(guò)的MONO框架(在Release目錄中)僅包含demo所需的組件,所以不適合你的程序,你可以自行下載MONO框架進(jìn)行精簡(jiǎn),這方面網(wǎng)上已有很多文章,我就不再羅嗦了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多