一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,Visual Studio Code。很多使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器。本文记录的本人在Mac上配置 ASP.NET5 并使用Visual Studio Code 的过程,先说明,Visual studio code现在并不支持插件功能,但VS code比较是个新生事物,相信不久VS code就会插件结伴而来,况且本身基于Electron,应该对于Electron的插件稍微调整一下就能用了,当然,还是说一下我的愿望:巨硬啊,移植unityVS到mac上吧。

##Visual Stduio Code的一些相关知识科普

####一,价格:

       在Build大会期间,微软发布了 Visual Studio 开发者工具中新的应用 —— Visual Studio Code。微软将 Visual Studio Code 描述为“代码优化编辑器”,这款工具免费向所有开发者开放下载,并提供 Mac OS 和 Linux 版本。

####二,功能:

       首先明确一下,这个 Visual Studio Code(以下简称 vscode)是一个带 GUI 的代码编辑器,也就是只能完成简单的代码编辑功能,并不是一个集成开发环境(IDE)

####三,和github atom的关系

       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也加入了进来。

##ASP.NET5的安装配置

       在mac上安装APS.net5直接使用homebrew即可


$ brew tap aspnet/dnx    
$ brew update    
$ brew install dnvm

然后把source dnvm.sh添加到.bash_profile.bashrc或者.zshrc中,然后运行source命令

在终端中运行dnvm看一下配置是否成功:



    ___  _  ___   ____  ___
   / _ \/ |/ / | / /  |/  /
  / // /    /| |/ / /|_/ / 
 /____/_/|_/ |___/_/  /_/  

.NET Version Manager - Version 1.0.0-beta5-10376
By Microsoft Open Technologies, Inc.

DNVM can be used to download versions of the .NET Execution Environment and manage which version you are using.
You can control the URL of the stable and unstable channel by setting the DNX_FEED and DNX_UNSTABLE_FEED variables.

Current feed settings:
Default Stable: https://www.nuget.org/api/v2
Default Unstable: https://www.myget.org/F/aspnetvnext/api/v2
Current Stable Override: &ltnone>
Current Unstable Override: &ltnone>

Use dnvm [help|-h|-help|--help]  to display help text.

如果需要更新DNX,可用如下命令


dnvm upgrade

现在,你的 DNX 就已经成功安装了。使用 dnvm list 可以查看所有已安装的.net runtime版本

##新建一个命令行工程

       设置命令行工程之前,需要安装命令行工具,需要nodejs和npm


$ npm install -g yo grunt-cli generator-aspnet bower

然后就可以用命令行工具创建ASP.net5的工程了,命令是:


$ yo  aspnet

出现如下窗口


     _-----_
    |       |    .--------------------------.
    |--(o)--|    |      Welcome to the      |
   `---------´   |   marvellous ASP.NET 5   |
    ( _´U`_ )    |        generator!        |
    /___A___\    '--------------------------'
     |  ~  |     
   __'.___.'__   
 ´   `  |° ´ Y ` 

? What type of application do you want to create? (Use arrow keys)
❯ Empty Application 
  Console Application 
  Web Application 
  Web API Application 
  Nancy ASP.NET Application 
  Class Library 

选择Console Application ,工程名就叫helloClr

运行此工程


$ cd helloClr
$ dnx . run

终端中会出现经典的hello world,然后任意输入结束程序。

##新建一个.net网站

       依旧是yo aspnet,不过这次选择Web Application,名称helloASPWeb

然后运行如下命令


$ cd helloASPWeb
$ dnu restore
$ dnx . kestrel

然后浏览器访问http://localhost:5001 即可

有可能报一个错误,显示如下

An unhandled exception occurred while processing the request.

IOException: kqueue() FileSystemWatcher has reached the maximum nunmber of files to watch. System.IO.KqueueMonitor.Add (System.String path, Boolean postEvents, System.Collections.Generic.List`1& fds) [0x00000] in , line 0

这是Mono的一个已知错误,需要一个设置,我把这个写到.zshrc文件中了


export MONO_MANAGED_WATCHER=false

再次运行,可以看到网站效果。

##配置Visual Studio Code

       首先下载Visual Studio Code,解压后把 Visual Studio Code.app 拖到 Applications 文件夹

接下来这步可选,添加命令行快捷启动命令

官网直接写到配置文件里了,个人推荐新建一个zsh插件来保存


code () {
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        [[ $1 = /* ]] && F="$1" || F="$PWD/${1#./}"
        open -a "Visual Studio Code" --args "$F"
    fi
}

个人不推荐现在给Visual Studio Code配置C#的编译和调试环境,个人觉得暂时还不好用,等相对成熟的时候,我再添加配置方法。

##和unity3D集成

       可以unity3D中修改默认的代表修改工具(不推荐),个人推荐暂时还是只用Visual Studio Code的打开文件夹功能,u3d中添加新的C#文件后,VS code中刷新文件夹即可。也就是说我现在VS code还是只是担任代码编辑器的工作。不过个人还是很期待巨硬把unityVS移植到mac上的,到时候我一定要好好研究一下。