我是一个有多年开发经验的.NET程序员。最近,我决定使用*NIX系统来开发.NET程序,虽然看起来有些激进,但是我可以说,这是我做过最好的决定了。

事情的起因是这样的,上周星期五(十月14日),我正在办公室处理一些东西,突然Windows弹出一个窗口说:“20分钟之后我们将更新Windows,在这之前你什么都做不了。”

15分钟之后,我的笔记本已经关机了。然后过了两三分钟,就开始了长达一个小时的更新过程,浪费了我的工作时间。所以,去你的Windows吧。

然而,这并不是纯粹因为一时的感情用事做出的决定。老实说,当初我是想买台MacBook来着,但是我们的项目需要做触屏产品,所以我就买了联想的Yoga 900。不过我想也许苹果有一天会出一台带触屏的笔记本,然后说这是笔记本的“革命”,这又是另外一个故事了。

开发过两个涉及到.NET Core的项目之后,我工作用的笔记本基本上和所有微软系统的东西绝缘了,然后安装了了Linux Mint。

为什么是Mint呢?不知道,网上有人推荐说,如果你是Linux新手的话(我不是纯粹的新手,在美好的大学时代,我还学了几个命令),应该使用Mint而不是Ubuntu(这里别太较真了兄弟),所以我就用了Mint。

安装新系统之前,我必须关闭笔记本的UEFI,重新分区,格式化。对我来说需要花些时间搞明白这些操作,不过还不是太难。

安装很快,过了几分钟,我就可以登录我的新系统了。

接下来我的首要任务是安装.NET Core框架,非常简单,没什么好说的。但是NET Core preview library有些依赖存在问题,我Google解决了这个问题。然后我的框架就可以工作了,我准备build一个应用。它“工作”了,加引号是因为引用System.Drawingproject.json出现了问题。

虽然程序可以正确运行,但是它抛出了找不到gdiplus.dll异常,情理之中,因为这是Windows组件,在Linux中找不到是正常的。

但是这里我想表达的意思是,这里.NET Core应用并没有崩溃。想象一下我把它部署到Linux服务器会发生什么——看起来一切正常,但是实际上却不是。这里要注意一下。

安装了一些必要的服务和应用(如Git, MongoDB, Redis, Slack, Skype等)之后。我要做出一个决定了:用什么来写代码。我是Visual Studio Code的忠实粉丝——我写JavaScript几乎全靠它(以及除了写C#之外所有的工作),但是,如果要保证生产率的话,我觉得还是Resharper比较好。

还有个叫做OmniSharp(支持Atom,Brackets,Sublime甚至Vim),它也兼容VS Code。但这毕竟不是Visual Studio + Resharper,也基本满足我的需求了,比如通过文件查找,通过method/type查找,重命名,跳转到定义处或显示引用等。

我也尝试了Project Rider项目,但是运气不太好。项目可以载入,但是内置的Resharper有错误,我不能build我的项目(可以写代码,不能工作)。

不过我相信如果JetBrains修复了这些bug的话,这会是.NET最棒的跨平台IDE(迫不及待了!)最后一点,没有什么是一个bash脚本解决不了的,所以项目的自动化(运行、测试等)不是问题。

最后要讲的东西是Docker。之前我也计划过学习Docker,但是因为没有地方用到,所以就不了了之了。现在,我们正在使用Microservices + CQRS模式开发,所以用Docker的镜像和容器应该是个不错的主意。

这也是在软件开发中使用Linux而不是Windows的一个优点。Linux是运行Docker的纯天然容器,如果它能在我的机器上运行,我几乎100%地肯定它能在远程服务器上运行。

我也可以在Windows 10上安装Docker,但是需要VirtualBox的HyperV。上次我试图编译它的时候,因为系统变量$PATH的问题遇到了错误。所以在Windows中使用Docker还是挺麻烦的。

对了,我忘了提为什么我的应用不能在Linux中运行了——因为这是在Windows上编译的,aurelia.json文件的路径以”\”结尾,必须将其替换成”/”才能工作(在Windows中也有同样的问题。)

我已经无法形容*NIX系统的bash有多么棒了,用脚本设置NGINX的SSL、签名、反向代理和重定向简直易如反掌。

最后,我不是说Windows不适合做软件开发。比如,[Visual Studio]在短期内可能不会有竞争对手。我的观点是,如果你不是必须使用某个非跨平台系统(通常都是指Windows)的话,也许你可以试一下其它环境。尝试新的东西,对强化技术和开拓视野来说总是好的。

原文链接:http://geek.csdn.net/news/detail/108540


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

在Linux开发.NET——拜拜了Win10相关推荐

  1. _用WSL,MobaXterm,Cmder配置linux开发环境

    离不开Windows的理由很多,作为后端开发需要使用linux的情况也很多,双系统总归是不方便,而且linux下的GUI体验也没用Win 10好. 如果使用虚拟机,那么文件交换和网络等各种问题也需要解 ...

  2. linux开发板通过网线连接电脑(win10)连接网络问题

    最近开始学习嵌入式Linux开发,使用野火imx6ull开发板,想把开发板通过网线连接到笔记本(笔记本连接WiFi),共享使用网络:查询了很多资料后成功实现,我现在把这个方法分享出来. 1.禁用防火墙 ...

  3. 准备嵌入式Linux开发环境

    无论做什么事情之前,都需要准备好工具,俗话说得好磨刀不误砍柴功.接着下来要进行嵌入式Linux的开发,那么什么才是最基本的工具呢?前面已经说了开发板,具备了开发的第一步,接着下来就是需要编写程序.编译 ...

  4. Clion远程Linux开发调试环境搭建

    在我以前的文章中介绍了如何使用QT搭建Linux开发环境                                ​​​​​​​        ​​​​​​​        ​​​​​​​    ...

  5. Linux开发板 - 02 - eop/uboot下载

    Linux开发板 - 02 - eop/uboot下载 前言:韦东山开发板学习笔记,第二篇.上一篇讲了:如何与ubuntu系统通讯,属于开发手册 "第三章-开发环境搭建" 的内容. ...

  6. 从业5年,教你学习Linux开发

    为什么要学习Linux编程? 其实这个问题很容易回答,因为你要写的程序是跑在Linux下的啊.至于跨平台的程序,你熟哪个就在哪个下开发,效率第一,纠缠平台和工具,纯属吃饱了没事干闲的.其实Linux编 ...

  7. linux开发神器--Tmux

    在Linux上工作的朋友,可能会常常遇到这种情况: 痛点1: 在公司用putty连着Linux开发机,程序正跑着,不知不觉到了下班的时候,要和老婆/女朋友约会了,但是程序还没跑完,并且进度有点紧,还得 ...

  8. 嵌入式linux编译环境搭建,嵌入式Linux开发环境搭建

    整理下嵌入式Linux开发环境搭建过程笔记. 一.制作u-boot.bin文件: tar xjf u-boot-1.1.6.tar.bz2 cd u-boot-1.1.6 patch -p1 < ...

  9. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

最新文章

  1. BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】
  2. Linux基础-yum软件包管理
  3. 功率增长步长(powerRampingStep)
  4. Winform中简单使用MD5加密用户登录密码
  5. 怎样健身最有效?程序员们可能还需要这些……
  6. LeetCode 1520. 最多的不重叠子字符串(贪心)
  7. python里else中文意思_Python循环语句中else的用法总结
  8. 获取GridView中RowCommand的当前索引行
  9. Effective C# 学习笔记(五) 最好重载你所创建类的ToString()方法
  10. python爬虫使用代理ip_爬虫使用代理IP的为什么不能全部成功
  11. js操作select(添加、移除、获取select值)
  12. 函数分离常数法 oracle,2009届高三数学第一轮复习课件:函数(最新)幻灯片
  13. u盘魔术师装linux,U盘魔术师安装步骤
  14. UE4 粒子特效基础学习 (02-光晕效果制作)
  15. C#判断PC是否支持触摸屏
  16. CReLU与PReLU的大体简介
  17. obv代码matlab,obv指标源代码,标准obv指标源代码
  18. WRFDA教程:3DVar同化卫星辐射率资料
  19. 如何让我的应用自动填写短信验证码?
  20. PyhontPygame 飞船大战外星人 完整代码及资源下载

热门文章

  1. 彻底搞定C指针-函数名与函数指针[转]
  2. MS-SQLSERVER--错用了LEN()函数
  3. 理解 Azure AD 安全默认值设置
  4. 技术分享 | CodeReview主要Review什么?
  5. 浅谈.Net异步编程的前世今生----TPL篇
  6. C#中使用jieba.NET、WordCloudSharp制作词云图
  7. 使用微信云托管快速部署一个.Net Core项目(一)
  8. 一不小心,知乎炸了!
  9. 你有把依赖注入玩坏?
  10. dotNET:怎样处理程序中的异常(实战篇)?