<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    備注學(xué)院

    LuLu

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      5 隨筆 :: 50 文章 :: 16 評(píng)論 :: 0 Trackbacks
    轉(zhuǎn):http://www.cnblogs.com/daylight/archive/2008/10/02/1303037.html

    這幾天看了很多關(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.novell.com/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í)寫(xiě)個(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

    posted on 2008-12-11 09:21 smildlzj 閱讀(2149) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): C#

    評(píng)論

    # re: 使C#程序脫離.net框架運(yùn)行(非飛信方式) 2010-09-12 09:23 悠哉悠哉
    .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++寫(xiě)個(gè)程序來(lái)調(diào)用。),雖然也不復(fù)雜,但是程序運(yùn)行時(shí)MONO黑乎乎的命令行窗口實(shí)在礙眼。

      前些日子看了下MONO官方Embedding Mono介紹,于是動(dòng)手寫(xiě)了個(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ì)寫(xiě)文章,直接上源碼下載地址:http://www.xun6.com/file/0dcf46622/EmbeddingMono.zip.html
      壓縮包中包含精簡(jiǎn)過(guò)的MONO框架(在Release目錄中)僅包含demo所需的組件,所以不適合你的程序,你可以自行下載MONO框架進(jìn)行精簡(jiǎn),這方面網(wǎng)上已有很多文章,我就不再羅嗦了。
      回復(fù)  更多評(píng)論
      

    # re: 使C#程序脫離.net框架運(yùn)行(非飛信方式) 2010-09-12 11: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++寫(xiě)個(gè)程序來(lái)調(diào)用。),雖然也不復(fù)雜,但是程序運(yùn)行時(shí)MONO黑乎乎的命令行窗口實(shí)在礙眼。

      前些日子看了下MONO官方Embedding Mono介紹,于是動(dòng)手寫(xiě)了個(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ì)寫(xiě)文章,直接上源碼下載地址:http://www.xun6.com/file/0dcf46622/EmbeddingMono.zip.html
      壓縮包中包含精簡(jiǎn)過(guò)的MONO框架(在Release目錄中)僅包含demo所需的組件,所以不適合你的程序,你可以自行下載MONO框架進(jìn)行精簡(jiǎn),這方面網(wǎng)上已有很多文章,我就不再羅嗦了。
      回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 丰满妇女做a级毛片免费观看| 韩国二级毛片免费播放| 免费亚洲视频在线观看| 国产精品亚洲精品观看不卡| 在线观看免费播放av片| 久久精品国产亚洲AV不卡| 亚洲成a人片在线观看天堂无码| 日本免费网址大全在线观看| 精品亚洲永久免费精品| 99在线免费视频| 久久精品国产亚洲AV麻豆王友容 | 黄页免费在线观看| 亚洲色偷偷偷鲁综合| 国产一精品一AV一免费| 亚洲国产精品无码久久久不卡| 三级黄色免费观看| 亚洲人成在线观看| 无码国产精品一区二区免费| 亚洲av产在线精品亚洲第一站| 在线a级毛片免费视频| 亚洲国产成人精品无码区二本 | 激情亚洲一区国产精品| 最近中文字幕无免费视频| 亚洲国产成人久久综合| 亚洲欧洲久久av| 30岁的女人韩剧免费观看| 亚洲成a人片在线不卡一二三区| 亚洲国产一区二区三区| 久久青草免费91观看| 亚洲人成电影网站久久| 国产又黄又爽又刺激的免费网址| 一级一级毛片免费播放| 色拍自拍亚洲综合图区| 免费无码成人AV片在线在线播放| 一级人做人a爰免费视频| 亚洲欧洲中文日产| 亚洲毛片不卡av在线播放一区| 99精品视频免费在线观看| 亚洲a∨无码一区二区| 久久久久亚洲精品美女| 国产免费人成在线视频|