剖析并利⽤VisualStudioCode在Mac上编译、调试c#程序
0x00 前⾔
⼀周多以前的微软的Build⼤会上,微软发布了⼀个让很多⼈眼前⼀亮的⼯具,也是本⽂的主⾓——Visual Studio Code。很多使⽤Windows的朋友都很⾼兴,认为⼜多了⼀个很不错的⽂档编辑器。不过匹夫更关⼼的是它的跨平台能⼒,这不,匹夫偷得半⽇闲,写篇⼩⽂来聊聊在Mac上如何使⽤Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌⼊Unity3D中,作为⼀个准“IDE”使⽤。
0x01 Visual Studio Code是谁?
好啦,既然要聊Visual Studio Code,那我们总是要先知道它是何⽅神圣吧?
关注微软或者微软build⼤会的新闻的⼈,相信对它⼀定不陌⽣了。摘录⼏条当时的新闻,各位就能有个⽐较直观的印象了。
新闻摘录⼀:
在Build⼤会期间,微软发布了 Visual Studio 开发者⼯具中新的应⽤ —— Visual Studio Code。微软将 Visual Studio Code 描述为“代码优化编辑器”,这款⼯具免费向所有开发者开放下载,并提供 Mac OS 和 Linux 版本。
新闻摘录⼆:
⾸先明确⼀下,这个 Visual Studio Code(以下简称 vscode)是⼀个带 GUI 的代码编辑器,也就是只能完成简单的代码编辑功能,并不是⼀个集成开发环境(IDE)
那么不知道⼤家是否和匹夫最初听到这个消息时的感觉相同,就是微软怎么突然就放出了这么⼀个⼯具呢?它不仅能跨平台⽽且看上去它也和传统的Visual Studio并不相同。
不错,Visual Studio Code其实是脱胎于⼀个使⽤JavaScript,Html和CSS并且基于io.js和Chromium的Github的开源框架——。⽽很多⼈熟悉的开源代码编辑器——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#开发体验”为⽬标的开源项⽬也加⼊了进来。
下⾯我们来看⼀下Mac版的Visual Studio Code的内容吧。
我们可以清楚的看到Visual Studio Code使⽤了Atom Shell框架。
0x02 ⾃⼰动⼿,丰⾐⾜⾷
好啦,既然已经解决了Visual Studio Code是谁的这个问题,那么下⾯让我们更进⼀步。按照从在Mac上安装,到⾃定义功能这样的顺序继续聊聊Visual Studio Code。
安装Visual Studio Code
安装Visual Studio Code其实需要两步,⾸先需要安装 ASP.NET 5,之后安装Visual Studio Code(其实先后顺序并没有关系,我就是先装的Visual Studio Code)。
如何在Mac上安装ASP.NET 5,⽹上已经有很多说明了。其实也很简单,直接使⽤即可。
$ brew tap aspnet/dnx
$ brew update
$ brew install dnvm
之后还会有说明,是⼗分容易操作的。
接下来就是安装Visual Studio Code了,我们只需要去到官⽹下载Mac的版本,之后解压缩即可。
更详细的安装说明可以参考。
⾃定义配置⽂件
OK,安装完成之后,终于可以开始我们的visual studio code的初体验了。
由于我⽐较常⽤的⼀个功能就是定义跳转,所以对定义跳转的快捷键⼗分敏感。⽽我的Mac上F12默认给了⾳量调节,所对很多把F12作为定义跳转的编辑器我起初都是很排斥的(duang~~~)。不过visual studio code这种编辑器显然会提供很⽅便的⽤户⾃定义的Json配置。
那么为了到控制快捷键配置的Json⽂件,我⾸先使⽤cmd+p这个快捷键组合,将visual studio code的command显⽰出来。
cmd+p
这⾥就是所有的命令了。
之后只需要输⼊key就发现了Open KeyBoard Shortcuts这个命令,执⾏它就打开了默认的快捷键配置。
其中左侧便是默认的快捷键设置,⽽右侧则是⽤户⾃定义的键位设置json⽂件。这⾥我将定义跳转设置成了⾃⼰习惯的cmd+y的组合。
我举这个例⼦,主要是为了说明我们可以很⽅便的⾃定义这个编辑器。那么下⾯我继续和⼤家聊聊,如何使⽤visual studio code在Mac上打开、编译并调试⼀个项⽬。
0x03 打开、编译并调试⼀个项⽬
为了演⽰visual studio code所谓的跨平台能⼒,我⾸先在Windows上⽣成⼀个项⽬,名字叫做ConsoleApplication2,这个项⽬主要⽤来实现⼀个⾃我介绍的功能。下⾯我就分别从打开、编译和调试这三个⽅⾯来聊聊。
⾸先展⽰⼀下这个来⾃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
将默认的任务修改成如下内容:
"version": "0.1.0",
"command": "xbuild",
"args": ["ConsoleApplication2.sln"]
即编译ConsoleApplication2这个项⽬。
之后使⽤shift+cmd+b快捷键进⾏编译。
shift+cmd+b
此时我们可以发现visual studio code编辑器的右侧出现了⼀个Output窗⼝,显⽰编译过程的输出内容。
显⽰编译成功。同时,在项⽬⽬录下我们可以看到刚刚⽣成的⽂件。
(写到这⾥,此时是0点11分)
这样,我们就使⽤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管理,编译调试等功能的编辑器。这让⼈如何能不爱呢?
0x04 集成到Unity3D
上⾯说了很多,但我⽬前毕竟以使⽤Unity3D开发游戏为主。所以能不能在Unity3D中⽤上Visual studio code呢?(当然很多同学会说Visual studio不是可以通过插件集成到Unity3D上吗?可,毕竟还有很多⼈使⽤Mac做开发嘛。。。)
答案是能,但导⼊项⽬的流程和之前并不完全相同。⽽且⾸先要明确⼀点,Visual studio code并⾮⼀款真正的IDE,且⽬前的版本是0.1.0,换⾔之还很不成熟。所以和Unity3D的合体,我只做探索,并不存在主观上的推荐或不推荐。
确保mono的版本⾜够⾼
为什么⾸先提这⼀句呢?因为众所周知Unity3D采⽤的Mono版本还停留在若⼲年前的低版本。所以很多Unity3D的从业者的Mono版本其实是很低的,⽽为了能够愉快的使⽤Visual studio code,官⽅的要求是mono的版本要⾼于3.12。所以为了保险,还是将mono升级成最新版本,当然你⽆须担⼼Unity3D⾃带的mono 会受到影响。
如果只是猎奇,则没有必要修改Unity的默认编辑器
当然,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的项⽬中写代码了。
0x05 总结
虽然Visual studio code还很年轻,也许它还有很多不⾜,但不要忘了它的出现所带来的意义。从开源CoreCLR到最近的Build⼤会,微软的态度和⾏动的确让⼈充满期待。
代码编辑器怎么下载

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。