C# winform 程式獨立運行(脫離 .NET Framework運行,綠色運行)

來源:互聯網
上載者:User

我覺的MS的.net方案其實很不錯。C#呢,用現在流行的話來說“很給力”!

但是.net版本眾多。而且.NET Framework架構很大。拖著一個大大的.net Framework總是讓人很鬱悶。

我也碰到了這個讓人鬱悶的問題。

在網上找呀找呀。找到另一個.NET Framework 替代方案。Mono。

為:http://www.go-mono.com/mono-downloads/download.html

Mono2.10.2版本支援.net 2.0至4.0版本。

下載回來後安裝一下,我傻了居然有336M。而且Mono的居然方式是命令列的。仍然讓人很鬱悶。

算了,既然安裝了。找找資料吧。

終於看到了前人的工作結晶。

Mono運行C#程式所要的庫資源其實不多。

 

只要C:\Program Files\Mono-2.10.2\bin目錄下的。(以下均以C:\Program Files\Mono-2.10.2目錄為根目錄)

mono.exe,mono-2.0.dll

lib\mono\.net版本號碼\mscorlib.dll。我這裡用的是.net 2.0版本。

lib\mono\gac\目錄下的必要庫檔案。WinForm程式只要這5個庫就行了。

 

每個庫檔案下,又有自己的.net版本號碼。如果用的是.net 2.0那麼4.0.0.0那個目錄就可以刪除,如果你想問為什麼沒有3.0、3.5的庫。答案是3.0和3.5用的是2.0的庫。而1.0的庫由於年代久遠,Mono2已經不支援了。如果需要的話,可以下載Mono早期的版本。

另外我發現庫檔案下,有同名的.mdb檔案。

 

那個.mdb檔案刪除掉對程式沒什麼影響。所以通通刪除掉。

 經過層層刪除,最後剩下的那幾個檔案,加起來也就8M多點。而程式一點問題也沒有。完美運行!

 

發行軟體的時候用RAR壓縮一下,程式只有3M多。很完美了!

可是我怎麼知道。。我的程式具體要用到哪些庫呢?

答案是:不知道。去記程式要用到哪些庫太累了。我才不會去記呢。我有一個偷懶的辦法。建立一個檔案夾,先將不變的檔案放好。bin目錄下的mono.exe,mono-2.0.dll,lib\mono\.net版本號碼\mscorlib.dll。最後將Mono下lib\mono\gac中所有的庫檔案拷貝過來。運行編譯好的C#程式。現在可以開始瘋狂的刪除了,碰到不能刪除的檔案,剩下的就是我們的程式要用的庫了。此方法簡單高效,百試不爽。

 

但是接下來還有個問題,Mono那個討厭的命令列。還有如果人家電腦上裝了.net庫呢?用MS自家的.net不是更好嗎?於是我參考Mono官網,用C和windows api寫了一個.net的引導程式。可以根據用設定來選擇.net版本,如果客戶電腦已經安裝使用者指定版本,則優先使用MS的.net,如果不存在則用Mono引導程式。

這個引導程式使用config.ini做為設定檔。

 

C#_Version=2.0                    //.net版本號碼,共有4個值:2.0、3.5、4.0C、4.0F

C#_AppName=MyBooks.exe   //開機前的應用程式名稱

這個引導程式,在32位XP下使用VS 2008編譯。因為是用windows api編寫,沒有額外的庫。所以理論上32位的系統應當都能使用,64位的沒試過。這個引導程式測試.net 2.0項目和.net 4.0項目都沒問題。這個程式直接調用了mono-2.0.dll。所以Mono.exe也就沒用了。下面給出我的測試專案,直接運行monologin.exe即可。效果我還是很滿意的。同時歡迎交流!

項目DEMO下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.