Macで.NETのプログラムを書いてみる

Windowsでしか使えないと思い込んでいた.NET Frameworkのサブセットが.NET Coreとして公開されていて、MacやLinuxでも使えるようになっていた。

<a href='https://dotnet.github.io/'>https://dotnet.github.io/</a>

# .NET CoreをMacにインストールする
.NET FrameworkをMacで使えるようにするためには、Homebrewのお世話になる。

	% brew install Caskroom/cask/dotnet
	
これでインストールは完了。その後は、```export PATH=/usr/local/share/dotnet;$PATH```しておけば良いのかな。

# .NET CoreでHello World
.NET Coreを使ったC#のプログラムをまずは書いてみるワケだけれど、まずはHello Worldからだ。

	% mkdir hello
	% cd ./hello
	% /usr/local/share/dotnet/dotnet new

すると、```project.json```と```Program.cs```ができる。
```Program.cs```の中身は、以下のようになっている。

	using System;
	
	namespace ConsoleApplication
	{
    	public class Program
    	{
       		public static void Main(string[] args)
        	{
        		Console.WriteLine("Hello World!");
        	}
    	}
	}


そして、```project.json```は、次のようになっている。

	{
	  "version": "1.0.0-*",
	  "buildOptions": {
	    "debugType": "portable",
	    "emitEntryPoint": true
	  },
	  "dependencies": {},
	  "frameworks": {
	    "netcoreapp1.1": {
	      "dependencies": {
	        "Microsoft.NETCore.App": {
	          "type": "platform",
	          "version": "1.1.0"
	        }
	      },
	      "imports": "dnxcore50"
	    }
	  }
	}

ということで、もうHello Worldのコードができている。

それでは、```/usr/local/share/dotnet/dotnet restore```を実行して、実行のための依存環境を整えた後、```/usr/local/share/dotnet/dotnet build```する。

	% /usr/local/share/dotnet/dotnet build
	Project hello (.NETCoreApp,Version=v1.1) will be compiled 	because expected outputs are missing
	Compiling hello for .NETCoreApp,Version=v1.1
	
	Compilation succeeded.
    	0 Warning(s)
    	0 Error(s)
	
	Time elapsed 00:00:03.7596930

これを実行するには、```/usr/local/share/dotnet/donet run```する。

	% /usr/local/share/dotnet/dotnet run
	Project hello (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation.
	Hello World!

動いた。

# Visual Studio Code上でデバッグ環境を作る
MacではVisualStudioが動かないのはもちろんだが、VisualStudioCodeなら動く。(と思ったら、<a href='https://www.visualstudio.com/vs/visual-studio-mac/'>https://www.visualstudio.com/vs/visual-studio-mac/</a>というページがあった。)

	% open -a /Applications/Visual\ Studio\ Code.app .

すると、```Required assets to build and debug are missing from 'hello'. Add Them?```と聞かれるので、```Yes```と答える。

デバッグコンソールには、以下のように表示される。

	--------------------------------------------------------------------------------
	You may only use the C# Extension for Visual Studio Code with Visual Studio
	Code, Visual Studio or Xamarin Studio software to help you 	develop and test your
	applications.
	--------------------------------------------------------------------------------

その後は、次の図の通り。特に何かあらためての設定等をしなくても、一通りは動かすことができる。

![20161219.png](https://qiita-image-store.s3.amazonaws.com/0/15553/0fca400f-cb63-0256-1222-82dc6d4272e0.png "20161219.png")

C#のExtensionがVisual Studio Code.appに入っていれば、とりあえずコード入力時のアシストもある程度効くし、ファイルの読み書きをする程度の簡単なアプリケーションなら、C#で書くことができそう。

まあ、その程度であれば、ライブラリが充実しているPerl、Ruby、PythonといったLightweight Languageでやるのが簡単ですけどね。

# .NET Core その他
donet コマンドで何ができるのか、--help オプションを付けて実行してみる。

	Common Commands:
	  new           Initialize a basic .NET project
	  restore       Restore dependencies specified in the .NET project
	  build         Builds a .NET project
	  publish       Publishes a .NET project for deployment (including the runtime)
	  run           Compiles and immediately executes a .NET project
	  test          Runs unit tests using the test runner specified in the project
	  pack          Creates a NuGet package

これらのCommandsに対応するVisual Studio Code上での操作の仕方はほとんど分からない(例えば、どうやってunit testをVisual Studio Codeのデバッグ環境で実行するんだろう？)んだけれど、それはおいおい調べていくことにする。