.NETとかよくわからなかったのでまとめてみた。
.NET Framework
Microsoftが開発したアプリケーション開発、実行環境。
各言語のコンパイラによって言語、環境によらない共通の中間言語(CIL, Common Intermediate Language)バイナリ(exeやdll)に変換し、 実行時に共通言語基盤(CLI, Common Language Infrastructure)の仮想実行システム(VES)が環境依存の機械語を動的に生成(JIT, Just in time)する。 CLIの仕様はECMAで標準化されていて、Microsoftが実装したCLIが共通言語ランタイム(CLR)。Windowsでしか動かない。
.NET Core
.NET Core - .NET Core による .NET のクロスプラットフォームへの移行
オープンソースで、クロスプラットフォームに対応した.NET。CoreCLRはWindowsだけではなくMacやLinuxでも動く。 .NET Frameworkと共通のAPIもあるが、GUIまわりでどちらかにしかないAPIが存在する。
Mono
オープンソースで、クロスプラットフォームな.NET Framework互換ソフトウェア。C#のコンパイラとCLIが実装されている。 Unityはこれを使っているが、バージョンが古くて使えないライブラリがある。
.NET CoreでHello World
インストール手順に沿って
dotnetコマンドを使えるようにする。
Hello Worldまで。
$ dotnet console -o hwapp
$ cd hwapp
$ ls
Program.cs hwapp.csproj
$ dotnet restore
$ ls
Program.cs hwapp.csproj obj
$ ls obj
hwapp.csproj.nuget.g.props project.assets.json
hwapp.csproj.nuget.g.targets
# dotnet build
$ dotnet run
Hello World!
$ dotnet bin/Debug/netcoreapp1.1/hwapp.dll
Hello World!
特に.NET CoreにしかないAPIも使っていないのでmono(.NET Framework)ででも実行できる。
$ cat Program.cs
using System;
namespace hwapp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
$ mono bin/Debug/netcoreapp1.1/hwapp.dll
Hello World!