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

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

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

    備注學院

    LuLu

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      5 隨筆 :: 50 文章 :: 16 評論 :: 0 Trackbacks
    轉:http://www.cnblogs.com/daylight/archive/2008/10/02/1303037.html

    這幾天看了很多關于脫離框架運行C#程序的文章,千篇一律,都是講飛信方案的,此方案涉及一些法律問題,只能自己研究一下,后來用google美國網站搜了一把,看了些文章,無意中發現mono,又用mono關鍵字到google中國搜了一把,已經有人實現控制臺程序脫離.net框架了。

    其實就是換mono的公共語言運行時來使用。這樣做的好處是體積小,發布免安裝。首先,您需要下載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,安裝后,就可以繼續進行了。

    1、用Visual Studio創建一個Windows應用程序,假設叫做WinApp,并添加一個按鈕。

    2、編譯此項目,得到一個WinApp.exe文件。

    3、自己建立一個文件夾WinApp,其中再建立bin和lib這兩個文件夾

    4、將mono安裝文件夾中的bin和lib子文件夾中需要的文件拷貝至剛才建立的那兩個文件夾。mono的默認安裝位置是:C:\Program Files\Mono-1.9.1

    5、將需要運行的exe文件放入WinApp文件夾。

    6、調用,可以使用bat批處理來調用,bin\mono.exe WinApp.exe。(其實寫個VC++的小程序調用最好,可以我沒學過VC++)

    好了,發個代碼上來,有興趣的朋友可以研究一下,7zip打包后僅3.26MB,卻實現了免安裝微軟龐大的框架。此測試項目我在純凈的虛擬機和本機均測試過,但有個bug,mono對中文路徑支持不好,如若有中文路徑,則無法運行。我后來又試了用C:\Program Files\Mono-1.9.1\bin\mono.exe來執行,則沒有中文路徑問題。我覺得缺少了哪個文件,一個一個試著拷貝到WinApp文件夾中,再用批處理來執行,還是錯誤。后來干脆將整個安裝目錄的文件全搬到WinApp目錄中,執行批處理還是失敗,可是用C:\Program Files\Mono-1.9.1\bin\mono.exe來執行就是能成功,百思不得其解啊!究竟少了什么東西呢?

    博客園單個文件限制在了1.95MB,我試了好多次不成功,大家到我的CSDN上下載吧,0分資源。

    http://download.csdn.net/source/661248

    posted on 2008-12-11 09:21 smildlzj 閱讀(2136) 評論(2)  編輯  收藏 所屬分類: C#

    評論

    # re: 使C#程序脫離.net框架運行(非飛信方式) 2010-09-12 09:23 悠哉悠哉
    .NET程序脫離框架進階 之 Embedding Mono  使用MONO讓.NET程序脫離.NET Framework運行是個不錯的方法,網上已有很多介紹。但是MONO運行.NET程序也有讓人郁悶的地方,比如你只能使用“mono 你的NET程序名.exe”這樣的命令運行你的.NET程序(當然,你也可以用C++寫個程序來調用。),雖然也不復雜,但是程序運行時MONO黑乎乎的命令行窗口實在礙眼。

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

    # re: 使C#程序脫離.net框架運行(非飛信方式) 2010-09-12 11:06 悠哉悠哉
    .NET程序脫離框架進階 之 Embedding Mono  使用MONO讓.NET程序脫離.NET Framework運行是個不錯的方法,網上已有很多介紹。但是MONO運行.NET程序也有讓人郁悶的地方,比如你只能使用“mono 你的NET程序名.exe”這樣的命令運行你的.NET程序(當然,你也可以用C++寫個程序來調用。),雖然也不復雜,但是程序運行時MONO黑乎乎的命令行窗口實在礙眼。

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

    主站蜘蛛池模板: 亚洲五月丁香综合视频| 精品亚洲成AV人在线观看| 国产精品亚洲av色欲三区| 女人被男人躁的女爽免费视频| 波多野结衣亚洲一级| 成人性生交大片免费看午夜a| 国产亚洲精品VA片在线播放| 国内一级一级毛片a免费| 色婷婷亚洲一区二区三区| 亚洲JIZZJIZZ中国少妇中文| 一个人看的免费观看日本视频www| 亚洲精品国产精品国自产观看| 黄色视屏在线免费播放| 亚洲精品乱码久久久久久按摩 | 精品国产呦系列在线观看免费 | 久久亚洲AV无码精品色午夜麻豆| 午夜不卡久久精品无码免费| 97亚洲熟妇自偷自拍另类图片| 2021在线永久免费视频| 日韩亚洲国产综合高清| 免费国产高清视频| 三级黄色免费观看| 亚洲综合综合在线| 成人午夜免费福利| 一区二区在线免费视频| 亚洲AV无码久久寂寞少妇| 免免费国产AAAAA片| 国产AV无码专区亚洲AV蜜芽 | 在线观看亚洲天天一三视| 精品国产污污免费网站| 亚洲一卡二卡三卡| 免费人成视频在线观看视频 | 亚洲高清有码中文字| 亚洲国产精品日韩专区AV| 久久一本岛在免费线观看2020| 亚洲综合色丁香麻豆| 亚洲精品天堂成人片?V在线播放| 你懂的免费在线观看网站| 亚洲日韩精品无码专区加勒比☆| 久久精品国产精品亚洲人人| 中文毛片无遮挡高潮免费|