<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í)寫個(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 閱讀(2136) 評(píng)論(2)  編輯  收藏 所屬分類: 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++寫個(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.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++寫個(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.xun6.com/file/0dcf46622/EmbeddingMono.zip.html
      壓縮包中包含精簡(jiǎn)過(guò)的MONO框架(在Release目錄中)僅包含demo所需的組件,所以不適合你的程序,你可以自行下載MONO框架進(jìn)行精簡(jiǎn),這方面網(wǎng)上已有很多文章,我就不再羅嗦了。
      回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 边摸边吃奶边做爽免费视频99 | 久久久影院亚洲精品| 3d动漫精品啪啪一区二区免费| 久久狠狠爱亚洲综合影院| 国产精品冒白浆免费视频| 在线观看免费播放av片| 亚洲中文字幕久在线| 亚洲国产成人久久综合野外| 99热免费在线观看| 最新亚洲人成无码网站| 亚洲嫩草影院久久精品| 国产性生交xxxxx免费| 日韩精品人妻系列无码专区免费| 亚洲国产日韩a在线播放| 亚洲av无码片在线播放| 永久久久免费浮力影院| 久久伊人免费视频| 国产成人高清亚洲一区久久| 久久久久亚洲精品日久生情| 亚洲AV无码乱码在线观看| 亚洲一区二区三区免费视频| jizz免费一区二区三区| 亚洲午夜精品久久久久久app| 亚洲av无码专区国产乱码在线观看| 成人免费视频小说| 91精品免费观看| 日韩精品无码免费专区午夜| 色偷偷亚洲男人天堂| 亚洲成人福利网站| 亚洲AV无码专区国产乱码电影 | 亚洲人成网网址在线看| 亚洲午夜久久久影院| 日本一道高清不卡免费| 精品免费人成视频app | 亚洲国产精品自产在线播放| 黄页免费的网站勿入免费直接进入| 国产色爽免费无码视频| jzzjzz免费观看大片免费| 337P日本欧洲亚洲大胆艺术图| 亚洲午夜精品一区二区公牛电影院 | 337P日本欧洲亚洲大胆艺术图|