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是一个介于关系数据库和非关系数据库之间的产品,是非 ...
随机推荐
- Wildfly在Linux下以Service的方式启动 配置步骤
1.前提介绍 在目前项目中使用Wildfly9在linux下部署项目,经常会通过远程的SSH来启动关闭服务.但是通过SHH启动 standalone.sh 的服务,如果关闭窗口服务就会被停掉.所以就想 ...
- php gizp压缩传输js和css文件
1. [代码][PHP]代码 <?php /** * 完整调用示例: * 1.combine.php?t=j&b=public&fs=jslib ...
- java:Properties属性文件概念
java:Properties属性文件概念 在java之前的国际化程序中提出了一个属性文件的概念,属性文件的后缀是:*.properties,那么在java中提供了意个属性文件的专门操作类,Prope ...
- 备份/还原MySQL数据库----MySQL Workbench
点击[Data Export],界面右侧将显示数据导出窗口. 2 点击[Refresh]按钮,刷新数据库列表(1),选择要导出的数据表(2),设置导出的目录(3),点击[Start Export]按钮 ...
- float,double与long long哪个更大?
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38: double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+ ...
- POJ1060 Modular multiplication of polynomials解题报告 (2011-12-09 20:27:53)
Modular multiplication of polynomials Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3 ...
- 与STL文件相关的各类学习地址
几个网址: 1.STL :https://en.wikipedia.org/wiki/STL_(file_format)#ASCII_STL 2.一个博客的文章地址: 三维图形数据格式 STL的 读取 ...
- bootstrap-自定义导航栏隐藏参数@screen-sm
导航菜单默认在屏幕小于768px的时候自动折叠,怎么自定义这个大小? 需要重新编译bootstrap 编译 CSS 和 JavaScript 文件 问题解决!
- 关于MFC中重载函数是否调用基类相对应函数的问题
在重载CDialog的OnInitDialog()函数的时候,在首行会添加一句:CDialongEx::OnInitDialog();语句,这是为什么呢?什么时候添加,什么时候不添加? 实际上,我们在 ...
- 【leetcode刷题笔记】Remove Duplicates from Sorted Array II
Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...