在Linux开发.NET 拜拜了Win10_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 在Linux开发.NET 拜拜了Win10

在Linux开发.NET 拜拜了Win10

 2016/10/21 5:30:51    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:.NETonLinux–bye,Windows10.我是一个有多年开发经验的.NET程序员。最近,我决定使用*NIX系统来开发.NET程序,虽然看起来有些激进,但是我可以说,这是我做过最好的决定了。事情的起因是这样的,上周星期五(十月14日),我正在办公室处理一些东西,突然Windows弹出一个窗口说:“20分钟之后我们将更新Windows,在这之前你什么都做不了。”15分钟之后,我的笔记本已经关机了。然后过了两三分钟
  • 标签:.net Linux net 开发
class="topic_img" alt=""/>

  英文原文:.NET on Linux – bye, Windows 10. 

  我是一个有多年开发经验的 .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)的话,也许你可以试一下其它环境。尝试新的东西,对强化技术和开拓视野来说总是好的。

发表评论
用户名: 匿名