乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       看見就非常 2012-04-20

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

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

      其實就是換mono的公共語言運行時來使用。這樣做的好處是體積小,發(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ù)進行了。

      1、用Visual Studio創(chuàng)建一個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++)

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

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

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

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

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

       回復 引用 查看   
      #3樓 2008-10-02 10:23 | clefoo      
      這個我們不知道需要什么文件啊
      LZ能不能說明點

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

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

       回復 引用 查看   
      #6樓 2010-09-12 09: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./file/0dcf46622/EmbeddingMono.zip.html
        壓縮包中包含精簡過的MONO框架(在Release目錄中)僅包含demo所需的組件,所以不適合你的程序,你可以自行下載MONO框架進行精簡,這方面網上已有很多文章,我就不再羅嗦了。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多