转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证
但是.net版本眾多。而且.NET Framework框架很大。拖著一個大大的.net?Framework總是讓人很郁悶。
在網上找呀找呀。找到另一個.NET Framework 替代方案。Mono。
Mono2.10.2版本支持.net 2.0至4.0版本。
算了,既然安裝了。找找資料吧。
Mono運行C#程序所要的庫資源其實不多。
?
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即可。效果我還是很滿意的。同時歡迎交流!
附件下載:
c#引導項目.rar?3.17MB
轉自:http://dws.iteye.com/blog/1168195
轉載于:https://www.cnblogs.com/xiangxiong/p/7126242.html
總結
以上是生活随笔為你收集整理的转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 中使用 Swag
- 下一篇: C# does not contain