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也都可以!

目前本人的Cactus项目在linux上运行良好(当然也可以跑win系统)附上项目介绍的地址:http://www.cnblogs.com/RainbowInTheSky/p/5212002.html

 

因缘际会的相遇,自当有非同寻常的结局 QQ交流群:110826636

原文地址:http://www.cnblogs.com/RainbowInTheSky/p/5496777.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle入门(十四E)之条件表达式case和deocde函数

一、表达式(1)条件表达式 共有两种条件表达式,即 CASE 表达式和DECODE 表达式。就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数。如果两个表达式相等,则返回null,如果不相等&…

4.基于NIO的群聊系统

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.文末有错误及解决方法; 【1】群聊需求 1)编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非 阻塞) 2)实…

构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型

在IIS 中,Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务,另外一个就是Windows Process Activation。 对于WWW服务,它主要是监控IIS的配置文件,将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性…

Oracle入门(十四F)之PL/SQL定义变量

一、变量介绍 (1)变量的使用可以使用变量: 临时存储数据存储值的操作可重用性(2)PL/SQL中的变量处理变量是: 在声明部分中声明和初始化在可执行部分中使用和分配新值变量可以是:作为…

小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...

由于本人最近购入了小米手环5 NFC版,所以对小米手环模拟门禁卡比较清楚一点。说一下用该手环模拟门禁的方法吧,我本人模拟的是学校公寓的门禁卡,不过学校的门禁卡是加密卡,可能操作起来稍微比不加密的门禁卡麻烦一点,因…

5.NIO零拷贝与传统IO的文件传输性能比较

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.本文部分内容参考自 NIO效率高的原理之零拷贝与直接内存映射 - 腾讯云开发者社区-腾讯云 【1】零拷贝原理 【1.1】传统IO的文件拷贝 【图解】 step1)调用 sys_read系统调用&#…

二进制漏洞利用与挖掘_二进制各种漏洞原理实战分析总结

本部分将对常见的二进制漏洞做系统分析,方便在漏洞挖掘过程中定位识别是什么类型漏洞,工欲善其事,必先利其器。0x01栈溢出漏洞原理栈溢出漏洞属于缓冲区漏洞的一种,实例如下:编译后使用windbg运行直接运行到了地址0x41…

Oracle入门(十四H)之良好的编程实践

一、为什么要学习它 好的编程实践是技巧,可以按照创建最好的代码可能。 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能。 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术。 这使它更容易阅读和修改编写的代码其他。二、编程实践已经学…

微软.NET 正式劈腿成功,横跨所有平台

.NET官方博客宣布了《Announcing .NET Core RC2 and .NET Core SDK Preview 1》,正式如期发布了.NET Core RC2, 现在可以放心的基于.NET Core 构建 ASP.NET Core, console apps 和 class libraries for Windows, OS X and Linux。这里贴张图表达下他们之间的关系: …

2.BIO与NIO区别

【README】 1.本文总结自B站《netty-尚硅谷》,很不错;2.本文介绍 BIO, NIO的知识;【1】BIO(传统java IO模型) 1)BIO-Blocking IO:同步阻塞,服务器实现模式为一个连接一…

k8s往secret里导入证书_K8S之Secret

简介secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。创…

Oracle入门(十四G)之PL / SQL中检索数据

一、PL / SQL中检索数据 (1)PL / SQL中的SQL语句可以在PL / SQL中使用以下几种SQL语句:•SELECT从数据库检索数据。•DML语句,例如INSERT,UPDATE和DELETE,以更改数据库中的行。•事务控制语句,例…

.NET Core 1.0 CentOS7 尝试

昨天宣布 ASP.NET Core RC2,据说差不多稳定了,以后不会有大改了。 参考:https://blogs.msdn.microsoft.com/webdev/2016/05/16/announcing-asp-net-core-rc2/ 一、环境装备 等待很久了,高兴之余昨晚安装一个CentOS系统,版本如下&a…

6.netty线程模型-Reactor

【README】 1..本文部分内容翻译自: [Netty] Nettys thread model and simple usage 2.netty模型是以 Reactor模式为基础的,具体的,netty使用的是 主从Reactor多线程模型; 3.先介绍了 Reactor线程模型;后介绍了 Ne…

python mac读取 文件属性_从Python获取和设置mac文件和文件夹查找器标签

macfile模块是^{}模块的一部分,在"2006-11-20 0.2.0"中被重命名为mactypes使用此模块,以下两个函数可用于获取和设置appscript 1.0版的查找器标签:from appscript import appfrom mactypes import File as MacFile# Note these lab…

Oracle入门(十四.1)之PL / SQL简介

一、PL / SQL描述程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起。 •是Oracle专有编程语言。- 它只能用于Oracle数据库或工具。二、程序语言扩展到SQL•是一种程序语言。 - 当遵循一系列指令时会产生结果。 •是3GL(第三代编程语…

构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)

今天的文章的比较的容易,主要讲述IIS中三个比较重要的组件:协议监听者(Protocol Listeners),WWW服务(World Wide Web Publishing Service)和WAS(Windows Process Activation Service),理解这三个组件的功能,是理解IIS…

7.netty服务器中提交任务到NioEventLoop(Nio事件循环执行线程)

【README】 1.本文总结自 B站 《尚硅谷-netty》; 2.NioEventLoop实际上是一个提交到线程池的Runnable任务,在while无限循环中运行 taskQueue中的任务(串行); 【1】提交任务到NioEventLoop 1)NioEventLoop&#xff1…

Oracle入门(十四.2)之PL / SQL的好处

一、PL / SQL的好处在Oracle数据库中使用PL / SQL编程语言有很多好处。 1.将过程构造与SQL集成 2.模块化程序开发 3.改进的性能 4.与Oracle工具集成 5.便携性6.异常处理二、优点 优点1:使用SQL集成程序化结构PL / SQL的首要优势是程序结构与SQL的集成。 SQL是一种非…

炒菜机器人的弊端_机器人炒菜真不是你想的那样!

7月8日下午,爱餐全产业链模式发布会在张家口进行,会上,张家口文旅投集团与上海爱餐机器人有限公司签订了3000台智能机器人设备合作协议,这些机器人可是身手不凡,清一色的都是会厨艺的炒菜机器人,未来他们还…