剖析并利用Visual Studio Code在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的开源框架——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框架。

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,网上已经有很多说明了。其实也很简单,直接使用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作为定义跳转的编辑器匹夫起初都是很排斥的(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窗口,显示编译过程的输出内容。

显示编译成功。同时,在项目目录下我们可以看到刚刚生成的ConsoleApplication2.exe文件。

(写到这里,此时是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,匹夫的名字被打印了出来。

可以看出,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写代码了。

0x05 总结

虽然Visual studio code还很年轻,也许它还有很多不足,但不要忘了它的出现所带来的意义。从开源CoreCLR到最近的Build大会,微软的态度和行动的确让人充满期待。

时间: 2024-12-24 13:18:41

剖析并利用Visual Studio Code在Mac上编译、调试c#程序的相关文章

剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】

0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器.不过匹夫更关心的是它的跨平台能力,这不,匹夫偷得半日闲,写篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌入Unity3D中,作为一个准“IDE”使用. 0x01 Visual Studi

如何在没有装VS(Visual Studio)的机器上编译运行C#程序

马上就要过年了,每年过年都要回老家,使用电脑和网络就没有这边这么方便了.想写程序了,都没有一台带Visual Studio的机器,我也不可能给每台机器都安装一个Visual Studio,怎么办呢? 网上搜索了一下,不是说需要Visual Studio的就是说需要.net framework sdk,Visual Studio好几个G,这个sdk也不小,1.3G,我的优盘没法装(优盘大小只有1G L) SDK其实有很多我不需要的东东,比如文档,其实我需要的只是一个编译器而已,于是我尝试着把csc

Visual Studio Code For Mac 支持 ejs 模版视窗编辑识别为html

右击 Visual Studio Code 的ICON 显示包含内容,打开如下路径: Visual Studio Code.app/Contents/Resources/app/extensions/html 双击打开 package.json 文件,原始代码: { "name": "html", "version": "0.1.0", "publisher": "vscode", &q

Visual Studio Code 支持 iOS Web 应用调试

微软JavaScript Diagnostics项目经理Kenneth Auchenberg在一篇文章中写道,有一个新的Visual Studio Code扩展,允许开发人员直接在他们的Mac和Windows编辑器上调试在iOS设备上运行的JavaScript Web应用和网站. Auchenberg解释说,以前,调试iOS Web应用需要在Mac上运行Safari Web查看器,或者使用一个专用的跨浏览器兼容性检查器,如BrowserStack.新的Visual Studio Code扩展“i

Visual Studio Code 如何编写运行 C、C++ 程序?

0. 前言 VS Code 是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言. 本文面向初学者(但不是纯小白),分享一点我配置C/C++的经验. 本文所有内容均可从VS Code的官方文档:C++ programming with Visual Studio Code 以及各个扩展的文档中获得,并且他们还会进行更新. 我的环境:64位Windows 10.VS Code的配置文件在Linux下应该也是通用的,但需要修改路径等部位配置. 1. 环境的准备 V

visual studio code 在 mac 下按 F12无效

vsc 默认通过 F12可以查看定义(Go to Definition),可以查看类或方法的定义: 但是在 mac 环境下,有时按 F12并不生效,但是菜单栏的 Go 选项是被启动的,此时需要进行 2 方面的检查: 1. vsc 针对的项目是文件夹的,如果你打开的文件不是在某个文件夹内,部分属性可能就不生效 2. 没有安装对应语言的插件,如果打开 vsc 有推进的插件,建议进行安装: 3. 如果是 php 环境,建议安装: PHP Intelephense 如果是 java 环境,建议安装:Ja

利用Visual Studio Code让做前端也和后端一样炫酷

这次主要是记录一些在开发中遇到的小技巧,不涉及代码本身的内容.以前做前端,有时候API数据有问题,点半天网络请求找数据,看起来麻烦,加上浏览器的JSON格式化不一定好用,比如Chrome,垃圾的一匹.长了的JSON不一定能显示,有点麻烦 由于我以前是用C#开发的,所以希望前端也能像VS一样,能够监控变量数据,断点调试等功能(浏览器虽然也支持,但是你懂的.) 今天发现VS Code的一个插件就能实现类似的效果. 首先去扩展中安装Debugger for Microsoft Edge这个插件.当然看

Visual Studio 2013 IIS Express使用域名调试mvc程序

1.编辑applicationhost.config文件 启动vs2013,在右下角IIS Express图标中右击,显示如图,点击框中菜单. 找到你的启动项,点击1,然后点击2,这是应该会有编辑器打开applicationhost.config文件.如果没有自行复制打开,进行编辑. 使用查找,输入你的启动项项目,然后在bindings中进行编辑,如我的要修改为*:80:xinxinran.me 2.修改hosts文件. 修改C:\Windows\System32\drivers\etc\hos

微软代码编辑器Visual Studio Code 1.35.0中文版

Visual Studio Code for Mac是微软旗下的一款代码编辑器,允许您使用大量编程语言,并集成调试和Git支持.Visual Studio Code可以帮助您能够在结构良好的环境中处理软件项目,该环境集成了基本代码编辑功能.而且可以为开发Node.js和ASP.NET应用程序提供支持,并提供超过30种编程语言的语法支持.在Visual Studio代码应用程序中,您可以选择打开单个文件,也可以链接Git存储库文件夹并访问所有相关文档.后一个选项更可取,因为您可以查看项目的结构并监