剖析並利用Visual Studio Code在Mac上編譯、調試c#程序

0x00 前言

以前微軟的Build大會上,微軟發佈了一個讓不少人眼前一亮的工具,也是本文的主角——Visual Studio Code。不少使用Windows的朋友都很高興,認爲又多了一個很不錯的文檔編輯器。不過我更關心的是它的跨平臺能力,因此寫了這篇小文來聊聊在Mac上如何使用Visual Studio Code編譯和調試C#代碼,最後我也會嘗試把Visual Studio Code嵌入Unity3D中,做爲一個準「IDE」使用。node

0x01 Visual Studio Code是誰?

好啦,既然要聊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框架。

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做爲定義跳轉的編輯器我起初都是很排斥的。不過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,這個項目主要用來實現一個自我介紹的功能——在終端打印出「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管理,編譯調試等功能的編輯器。這讓人如何能不愛呢?

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大會,微軟的態度和行動的確讓人充滿期待。

相關文章
相關標籤/搜索