以前微软的Build大会上,微软发布了一个让不少人眼前一亮的工具,也是本文的主角——Visual Studio Code。不少使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器。不过我更关心的是它的跨平台能力,因此写了这篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后我也会尝试把Visual Studio Code嵌入Unity3D中,做为一个准“IDE”使用。node
好啦,既然要聊Visual Studio Code,那咱们老是要先知道它是何方神圣吧?git
关注微软或者微软build大会的新闻的人,相信对它必定不陌生了。摘录几条当时的新闻,各位就能有个比较直观的印象了。github
新闻摘录一:json
在Build大会期间,微软发布了 Visual Studio 开发者工具中新的应用 —— Visual Studio Code。微软将 Visual Studio Code 描述为“代码优化编辑器”,这款工具免费向全部开发者开放下载,并提供 Mac OS 和 Linux 版本。windows
新闻摘录二:app
首先明确一下,这个 Visual Studio Code(如下简称 vscode)是一个带 GUI 的代码编辑器,也就是只能完成简单的代码编辑功能,并非一个集成开发环境(IDE)框架
那么不知道你们是否和我最初听到这个消息时的感受相同,就是微软怎么忽然就放出了这么一个工具呢?它不只能跨平台并且看上去它也和传统的Visual Studio并不相同。electron
不错,Visual Studio Code实际上是脱胎于一个使用JavaScript,Html和CSS而且基于io.js和Chromium的Github的开源框架——Electron。而不少人熟悉的开源代码编辑器——Atom编辑器(为了表示区别,不和下面的Atom Shell混淆,只要提到的Atom是编辑器,则使用Atom编辑器这样的称呼)一样使用了Elctron框架,我以前听过有一种说法是Visual Studio Code是基于Atom编辑器的,其实这并不许确,它们只不过都使用了Electron而已。而解开Visual Studio Code的内容后能够发现,其中的确有不少文件冠以“Atom”这样的名号,这又是怎么一回事呢?其实去Electron的托管页面就能够看到答案了,Electron以前的名字叫作Atom Shell,而Visual Studio Code中的Atom指的实际上是Atom Shell(顺便提一嘴,以前微软就已经有了Visual Studio Online,那款编辑器叫作Monaco)。编辑器
虽然和Atom编辑器一样都是基于Elctron,可是没有人会把Visual Studio Code和Atom编辑器混为一谈,由于微软显然也添加了本身的一些功能,好比将Roslyn以及另外一个“以使开发者能在任何平台任何编辑器均可以得到良好的C#开发体验”为目标的开源项目omnisharp也加入了进来。工具
下面咱们来看一下Mac版的Visual Studio Code的内容吧。
咱们能够清楚的看到Visual Studio Code使用了Atom Shell框架。
好啦,既然已经解决了Visual Studio Code是谁的这个问题,那么下面让咱们更进一步。按照从在Mac上安装,到自定义功能这样的顺序继续聊聊Visual Studio Code。
安装Visual Studio Code其实须要两步,首先须要安装ASP.NET 5,以后安装Visual Studio Code(其实前后顺序并无关系,我就是先装的Visual Studio Code)。
如何在Mac上安装ASP.NET 5,网上已经有不少说明了。其实也很简单,直接使用Homebrew便可。
$ brew tap aspnet/dnx $ brew update $ brew install dnvm
这是十分容易操做的。
接下来就是安装Visual Studio Code了,咱们只须要去到官网https://code.visualstudio.com/下载Mac的版本,以后解压缩便可。
更详细的安装说明能够参考此处。
OK,安装完成以后,终于能够开始咱们的visual studio code的初体验了。
因为我比较经常使用的一个功能就是定义跳转,因此对定义跳转的快捷键十分敏感。而个人Mac上F12默认给了音量调节,所对不少把F12做为定义跳转的编辑器我起初都是很排斥的。不过visual studio code这种编辑器显然会提供很方便的供用户自定义的Json配置。
那么为了找到控制快捷键配置的Json文件,我首先使用cmd+p这个快捷键组合,将visual studio code的command显示出来。
cmd+p
这里就是输入全部命令的地方了。
以后只须要输入key就发现了Open KeyBoard Shortcuts这个命令,执行它就打开了默认的快捷键配置。
其中左侧即是默认的快捷键设置,而右侧则是用户自定义的键位设置json文件。这里我将定义跳转设置成了本身习惯的cmd+y的组合。
我举这个例子,主要是为了说明咱们能够很方便的自定义这个编辑器。那么下面我继续和你们聊聊,如何使用visual studio code在Mac上打开、编译并调试一个项目。
为了演示visual studio code所谓的跨平台能力,我首先在Windows上生成一个项目,名字叫作ConsoleApplication2,这个项目主要用来实现一个自我介绍的功能——在终端打印出“chenjd”这几个字母。下面我就分别从打开、编译和调试这三个方面来聊聊。
首先展现一下这个来自Windows的项目在Mac上的位置和内容:
要编译这个项目,咱们显然要先在Visual studio code中导入该项目。
咱们只须要选择File下拉菜单中的Open便可:
此时项目已经导入了Visual studio code中。
打开Programe.cs文件,咱们能够看到智能感应,自动补全的功能。
项目已经导入了,那么下一步咱们就须要对项目进行编译了。
此时咱们再次使用cmd+p这个快捷键组合,将visual studio code的command显示出来。此次咱们输入>configure task runner。打开tasks.json文件,配置任务。
cmd+p >configure task runner</pre>
将默认的任务修改为以下内容:
"version": "0.1.0", "command": "xbuild", "args": ["ConsoleApplication2.sln"]
即编译ConsoleApplication2这个项目。
以后使用shift+cmd+b快捷键进行编译。
shift+cmd+b
此时咱们能够发现visual studio code编辑器的右侧出现了一个Output窗口,显示编译过程的输出内容。
显示编译成功。同时,在项目目录下咱们能够看到刚刚生成的ConsoleApplication2.exe文件。
这样,咱们就使用Visual studio code,利用mono编译出一个来自windows的项目。
听上去颇有趣,不是吗?那么下面咱们就执行一下生成的这个程序,而且尝试调试它。
OK,熟悉本文套路的人必定到这里就知道了我要作什么了。不错,此次仍是要使用cmd+p这个快捷键组合,将visual studio code的command显示出来。不过此次的命令换成了>debug:configure。
cmd+p >debug:configure
此次调出了Debug的配置json文件——launch.json。
能够看到默认的launch.json是用来处理nodejs的,名字就直接叫作“Launch app.js”。
因此咱们须要将这个配置文件修改为使用mono才行。
下面是我修改后的launch.json。
以后咱们点击Debug模式下的运行按钮。
能够看到运行到了断点。
此时咱们打开断点,再回过头去终端看一眼输出结果。
OK,个人名字chenjd被打印了出来。
能够看出,Visual studio code的确是一款轻量级,但同时也具有了智能感应,自动补全,git管理,编译调试等功能的编辑器。这让人如何能不爱呢?
上面说了不少,但我目前毕竟以使用Unity3D开发游戏为主。因此能不能在Unity3D中用上Visual studio code呢?(固然不少同窗会说Visual studio不是能够经过插件集成到Unity3D上吗?但是毕竟还有不少人使用Mac作开发)
答案是能,但导入项目的流程和以前并不彻底相同。并且首先要明确一点,Visual studio code并不是一款真正的IDE,且目前的版本是0.1.0,换言之还很不成熟。因此和Unity3D的合体,我只作探索,并不存在主观上的推荐或不推荐。
为何首先提这一句呢?由于众所周知Unity3D采用的Mono版本还停留在若干年前的低版本。因此不少Unity3D的从业者的Mono版本实际上是很低的,而为了可以愉快的使用Visual studio code,官方的要求是mono的版本要高于3.12。因此为了保险,仍是将mono升级成最新版本,固然你无须担忧Unity3D自带的mono会受到影响。
固然,Visual studio code也能够做为Unity的默认编辑器。可是我提醒一句,若是只是为了猎奇,则没有必要作这个修改,由于最后你还得改回去,多费力不讨好的一件事。
打开咱们的Unity3D界面,打开Assets下拉菜单,点击Sync MonoDevelop project。
以后将项目导入到Visual studio code中,和上面的例子基本相似,不过还有一些区别。
能够看到熟悉的Unity3D的项目目录已经出如今了Visual studio code中。不过此时项目并未真正的导入进来,因为Unity的项目有2个sln,一个是项目名.sln,另外一个是项目名-csharp.sln。因此Visual studio code没法肯定,这就须要咱们去手动处理。点击最下面的火焰图标(project),出现了以下图的选择project的下拉条。
此时咱们选择egg-csharp.sln。好啦,到此你就能够愉快的使用Visual studio code在Unity3D的项目中写代码了。
虽然Visual studio code还很年轻,也许它还有不少不足,但不要忘了它的出现所带来的意义。从开源CoreCLR到最近的Build大会,微软的态度和行动的确让人充满期待。