本人才疏學淺,在此記錄自己用C#在Linux上開發的一點經驗,寫下這篇指南。(給想要在Linux上開發C#程序的朋友提供建議)
目前在Linux上跑的網站:http://douxiubar.com | http://douxiubar.com/AdminLogin/Index(MVC4+Dapper+Autofac)的一個作品
在Linux上開發建議上http://www.linuxdot.net/和http://jexus.org/討論學習,我剛接觸那會才知道自己才疏學淺,受益良多(入門題;IntPtr在64位下的長度是多少?嘿嘿)
指南一:首先正視Linux和win的一些區別,也就是一些常識,win的文件命名不區分大小寫,而Linux區分大小寫,所以創建文件的時候要注意大小寫
指南二:系統目錄的分隔符的不同,可以調用Path.DirectorySeparatorChar做到多平台兼容,另個建議做路徑操作多用System.IO.Path,而不是自己去拼接
指南三:換行符的不同,win的\r\n,linux的\n,可以調用Environment.NewLine做到兼容,而不是自己傻傻的寫換行符,也建議看看System.Environment這個類
指南四:當你想要開發一個程序,既能在Linux運行正常,又能跑win,要注意自己調用的dll走的api是不是有兼容性(比如有些dll里面直接調用了win32的api,你在linux上調用就會不支持)。
指南五:C#語言本身是免費的,跨平台的,它編譯完后是IL也是如此,所以你用VS開發的C#,是可以直接在Linux上運行的(實際承載的runtime才是關鍵),一句hello world可以跑遍大江南北(win,linux,mac)。
指南六:如果想在Linux上開發調試,Xamarin Studio符合你的胃口(地址:http://www.monodevelop.com/ Xamarin Studio的前身是monodevelop,而monodevelop的前身是SharpDevelop,可以說源遠流長),利用GTK#可以在Linux開發桌面程序,現在最新版本,都可以支持最新的C#編譯器。
指南七:關於創建項目包,vs自帶的模板很多配置(比如web.config)和dll,是偏向win的,即使是空項目,也會在Linux上出現錯誤(跑jexus web服務器),這個時候就要對引用的dll和web.config內的配置做一下清理,去除用不到的東西。(這個時候很多基礎差的基本已經懵逼,平常在win上開發,完全沒有注意過的要點,就暴露了自己的基礎)
指南八:建議項目開發的時候使用條件開發,需要調用平台特性的地方,有針對的進行條件編譯,這樣可以使得項目更加健壯!
指南九:Linux上開發C#並不是很難,其實還是簡單的,只要你會玩,會看,會解決報錯(看懂和解決幾百個Exception,做人要仔細,這樣你距離大神就不遠了)!
指南十:推薦學習的博客:http://www.cnblogs.com/xiaodiejinghong/,http://www.cnblogs.com/yunei/
指南十一:不要問Linux開發成熟不成熟,jexus的作者在linux上用C#開發都很多年了。不要問jexus性能怎么樣,你實際弄兩台相同配置的電腦,一台跑linux+jexus+mono,另一台跑win+iis+.NET FrameWork,用apache的ab工具壓測一下即可知道(我怕我說jexus的性能不錯,你不信),一切用實際數據說話!
指南十二:jexus是免費的,但是不開源(想要源碼可以和作者商業商量獲取,有時候就算給你一個人代碼,你也看不懂。。。),但是你不用擔心什么,有bug和建議統統可以告訴作者,普通web服務器有的功能,它都有。用jeuxs不只是asp.net的web服務器,用來跑php,java也都可以!
后續添加的指南 C#在Linux上的開發指南(續)
目前本人的Cactus項目在linux上運行良好(當然也可以跑win系統)附上項目介紹的地址:http://www.cnblogs.com/RainbowInTheSky/p/5212002.html