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