かばちんのエンジニアブログ

日々の経験の中で培った内容を備忘録も兼ねて記録していくブログです。少しでも誰かの役に立つために頑張って続けていけたらなと思います。

CoreCLRのインストールとビルド、実行まで

最近必要に駆られてCoreCLRを触っております。


CoreCLRとはMicrosoft社が開発しているオープンソースで、
LinuxOS上で.NET Coreを動かすことができるフレームワークです。


簡単に説明すると、C#で書いたプログラムがそのままLinuxOS上で実行できるという代物です。
LinuxOS上ということなので、Linuxベースで作られているMacOSでももちろん実行することができます。


なんとCoreCLRはdockerにも対応しているので、インストールするのが面倒でかつ
dockerに慣れている方はdocker版を導入してみると良いかもしれません

docker run -it microsoft/dotnet:latest


今回はUbuntuでのインストール手順を説明したいと思います。


インストール

インストールはCoreCLRの公式サイトに分かりやすく手順が書いてありますので、
そちらを参照して頂いても大丈夫ですが、こちらにも記載したいと思います。
.NET - Powerful Open Source Development


Ubuntu 14.04 の場合
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
Ubuntu 16.04 の場合
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update

上記コマンドを実行してapt-getリストをアップデートしたら、実際にCoreCLRをインストールします。

sudo apt-get install dotnet-dev-1.0.0-preview2-003121


これでCoreCLRのインストールが完了しました!
とても簡単ですね。


ビルド準備

CoreCLRでビルドするには、まず下記のようにプロジェクトの初期化を行います。

$> mkdir sample
$> cd sample

$> dotnet new
Created new C# project in /root/sample.

$> dotnet restore
log  : Restoring packages for /root/sample/project.json...
log  : Writing lock file to disk. Path: /root/sample/project.lock.json
log  : /root/sample/project.json
log  : Restore completed in 1335ms.

$> dotnet run
Project sample (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling sample for .NETCoreApp,Version=v1.0

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:01.9024996
 

Hello World!

ひとつずつ説明していきます。


まずは、mkdirでプロジェクトが格納されるフォルダを作成し、cdでその中に入ります。
ここは特に問題ないと思います。



次に dotnet new コマンド。
このコマンドを実行することにより、デフォルトのProgram.csファイルとproject.jsonファイルが作成されます。
Program.csとproject.jsonファイルの中身は下記のようになっています。

// 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.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

Program.csはコンソールに「Hello World!」と出力するだけのシンプルなものになっています。
project.jsonはなにやらいろいろと設定されていますが、CoreCLRを動かすのに最低限必要なもののようです。
必要なフレームワークなどがある場合はこのファイルを編集して対応することができそうです。


次に dotnet restore コマンド。
このコマンドを実行するとproject.jsonファイルの設定に基づいて必要なファイルなどをダウンロードしてきます。
それと同時にproject.lock.jsonという中身の多い設定ファイルが作成されます。


最後に dotnet run コマンド。
このコマンドは読んで字の如くプログラムを実行してくれます。
ソースコード変更後の初回実行時に限りビルドも同時に行ってくれます。

ビルドのみを行いたい場合は下記コマンドにて行うことが可能です。

dotnet build

実行結果を見るとたしかに最下部のほうに「Hello World!」と表示されていますね!


最後に

今回はインストール手順とビルド、実行までの説明でした。


今後CoreCLRを使ってプロジェクトを進めていくにあたりいろいろと壁にぶつかることもあると思いますが、
これからCoreCLRを触る機会のある方たちに有用な情報として残していけたらなと思っています。


CoreCLRは2016年6月に1.0版がリリースされたので、今後ますます開発が進められて実用レベルに達する日も
遠くはないんじゃないかなぁと、期待も込めて思っています!


それでは。