C#在Linux上的开发指南
本人才疏学浅,在此记录自己用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



C#在Linux上的开发指南的更多相关文章
- C#在Linux上的开发指南(续)
续之前的一篇开发指南http://www.cnblogs.com/RainbowInTheSky/p/5496777.html 部分人在部署的时候经常出现dll兼容问题(其实可以看小蝶惊鸿的文章,蝶神 ...
- Linux C++轻量级开发指南
作为一名产品开发,一套顺手的集成开发环境必不可少.大多数时候,开发经理将精力投入在产品需求分析上而忽视了研发质量甚至连基本的集成开发环境都没有统一.当然,如果你们的项目仅仅需要部署在单一的环境中或没有 ...
- Linux上常用命令整理(一)—— cat
近几个月刚从windows上转过来,开始慢慢熟悉linux,先不撕比到底哪个更好,首先要怀着相互借鉴的精神去了解各个平台. Linux上做开发,除去使用文本编辑器做开发的大神之外,大家(包括我这种菜鸟 ...
- Linux平台开发指南
声明:以下内容摘自http://www.me115.com/post/25.html 以下技术和工具是Linux平台下工作的基础,熟练掌握: C++ 工作语言,重要性不言而喻: 入门: <C++ ...
- Linux上进行单片机开发
linux上可以使用sdcc进行单片机开发 ubuntu使用 apt-get install sdcc 即可安装. 附一个比较通用的Makefile PRJ := test SRC := $(wild ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- 在Linux上进行QT UI开发
在QT Creator UI编辑器上通过拖拽各种控件产生UI界面,然后点击编译/Build按钮,会自动生成对应的ui_xxxx.h的 头文件/header file. 参考: 1.Linux上使用Qt ...
- DPDK2.1 linux上开发入门手册
1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...
- 【数据库】Mean web开发 04-MongoDB在Linux上的安装及遇到的问题
简介 Mean是JavaScript的全栈开发框架.更多介绍 用MongoDB实现持久数据的存储是Mean Web全栈开发中的一部分. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...
随机推荐
- 【转】HTTP方法
[转]HTTP方法 掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在学习JSP开发中的某些知识就可以易如反掌了. 一,HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求 ...
- node 渲染html模板配置
node 渲染html模板配置 安装swig模块 npm install swig--save - dev 加载swig模块 var swig = require('swig'); 模板配置 //第一 ...
- zTree的后台数据绑定
前台js: var treeNodes; $.ajax({ async: false, cache: false, type: 'POST', contentType: "applicati ...
- 是否可以重定向到 WEB-INFO 下的页面?
redirect的路径一定不能在WEB-INF路径下,因为redirect是相当于用户直接访问了路径,而用户不能访问WEB-INF目录下的文件,只有程序内部转发的时候才能转发到WEB-INF下的JSP ...
- 分享知识-快乐自己:springboot之thymeleaf (1):简单的thymeleaf例子
之前搞springboot时,发现spring很推荐thymeleaf,所以看了看学了学,感觉不错,做个笔记先. 做个简单和例子,项目是springboot,所以引入themeleaf相关包 pom. ...
- thinkphp微信开发(消息加密解密)
使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解密文件和Wec ...
- Jetson TX2火力全开
Jetson Tegra系统的应用涵盖越来越广,相应用户对性能和功耗的要求也呈现多样化.为此NVIDIA提供一种新的命令行工具,可以方便地让用户配置CPU状态,以最大限度地提高不同场景下的性能和能耗. ...
- JAVAmap容器基本使用
import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Scanner ...
- Python:模块详解及import本质
转于:http://www.cnblogs.com/itfat/p/7481972.html 博主:东大网管 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), ...
- 【转】Pro Android学习笔记(十):了解Intent(上)
目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...