某一次 我同事用了這個詞 ,說這樣才顯得夠專業 擦。把某某項目 部署到服務器上 。擦 不就是拷個文件過去運行么。月亮 還是綿羊 我搞不清楚了 咱英文不好,綿羊叫的聲音?。你就叫我山寨程序猿 隨意 一直就這風格。
mono 是一種基於.NET Framework的開放源代碼平台。
安裝文件在此地址下載
http://www.go-mono.com/mono-downloads/download.html
經證實 安裝過后直接 把 moon.exe 和相關目錄 直接 拷走 然后運行也是可以的,所謂的綠色軟件。mono本身就是一個開放的.NET Framework平台 。就是說你可以在沒安裝.NET Framework框架的電腦上運行 基於.NET Framework 的程序,並且不用安裝 放在U盤里直接就可以運行 只要mono放在一起。然后你引用了哪些類庫 就拷貝對應目錄的 dll文件 也要放在一起,說白了就是moon版本的 庫文件。看下我的 程序里只用到了基本類庫 然后就是winform 和gdi ,然后我只拷了這些文件過來 總共4兆的樣子lib\mono\gac:
mono運行.net程序的方式是: mono.exe 加上.net程序文件名。通過以上你就明白了 ,把只要編寫一個批處理命令文件 就ok了。
雙擊批處理文件:
看到沒左上角的默認圖標變成mono的了 。程序運行效果跟原來的一樣。換其他電腦試試呢,剛剛不是說過嗎 整個文件夾拷到U盤里 在其他電腦可以直接運行。如果在沒安裝.net框架的電腦上你發現不行 ,有可能出現這樣的錯誤:
根本原因:.net的exe 是托管代碼 運行時首先他要尋找mscoree.dll 由此來匹配操作系統已經安裝了的.netframework版本。Mscoree.dll 存在於system32 目錄下。
關於mscoree.dll深究詳情請參考此文 .NET中的幕后英雄:MSCOREE.DLL :
http://blog.csdn.net/atfield/article/details/1750890
明白了噻 ,你可以把你系統的Mscoree.dll 文件也拷到U盤目錄下,然后再寫個批處理文件,判斷沒有同名文件 則從U盤拷貝一份到system32 目錄。由此 看你自己需求 ,你可以把批處理 寫成一個安裝腳本 就像 tomcat 那樣 ,這些都是可以做到的。
還有一點 通過批處理運行始終有個命令行窗口 很不爽。C#里你知道有個什么 progress 可以調用外部進程 通過參數的方式 ,其實也就跟批處理異曲同工,並且C++里也有同樣的東西,這樣就可去除命令行窗口。我們編寫一段簡單的C++代碼 把.net程序作為參數 傳給moon運行,原理都講得相當明了了 。這里我就不貼圖了 ,經我測試 是行得通的。
接下來我們將 介紹setupFactory的使用。
.net程序部署(setupFactory方式)