第1回 ASP.NET 5をOS X/Linuxで使うための準備:連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド(4/5 ページ)
OS X/UbuntuでASP.NET 5アプリを動作させるまでの手順をステップバイステップに解説していく。
サンプルコードを動かしてみる
OS X/UbuntuへのXREのインストールが済んだら、「aspnet/Home」でサンプルコードが配布されているので、まずはこれを実行してみよう。「git clone」コマンドを使ってもよいし、ZIPファイルをダウンロードしてもよいので、適当なディレクトリにアーカイブを展開しておく(ここでは、OS X/Ubuntuの両者で「~/work/aspnet5/Home-master」ディレクトリ以下に取得したサンプルコードを展開した)。
サンプルコードを実行する手順は主に以下のようになる。
- プロジェクト/ソリューションのルートディレクトリに移動する
- 「kpm restore」コマンドを実行して、プロジェクトが依存しているアセンブリを取得する
- 「k run」「k kestrel」などのコマンドでプログラムを実行する
具体的に説明していこう。
コンソールアプリを実行してみる
「Home-master/samples/ConsoleApp」ディレクトリにはいわゆる「Hello World」アプリが保存されている(以下のコード)。
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
}
}
このアプリを実行するには、以下のようなコマンドラインを実行する。
1: $ source kvm.sh # まだ、「source kvm.sh」コマンドを実行していない場合
2: $ cd ~/work/aspnet5/Home-master/samples/ConsoleApp
3: $ kpm restore
4: $ k run
5: Hello World
1行目: まだ「source kvm.sh」コマンドを実行していない場合は実行しておく(Ubuntuの場合は「source ~/.kre/kvm/kvm.sh」を実行する)
2行目: プロジェクトのルートディレクトリに移動。
3行目: 「kpm restore」コマンドを実行して、NuGetを利用してプロジェクトが依存しているアセンブリを取得。
4行目: 「k run」コマンドでプログラムを実行。
5行目: おめでとう!
kpmコマンドは、ASP.NET 5のパッケージに関連する各種操作を行うためのコマンドで、上記のように「restore」を指定してこのコマンドを実行すると、プロジェクトのルートディレクトリにあるproject.jsonファイルをチェックして、アプリの実行に必要なアセンブリをNuGet(やMyGet)経由で取得してくれる。そこで、ConsoleAppディレクトリにあるこのファイルの内容を見てみよう。
{
"dependencies": {
},
"frameworks": {
"aspnet50": {},
"aspnetcore50": {
"dependencies": {
"System.Console": "4.0.0-beta-*"
}
}
}
}
このファイルには依存関係の他に、ビルドターゲット、構成情報などを記述する。
- "dependencies": プロジェクトが依存するアセンブリを記述
- "frameworks": ビルドのターゲットフレームワーク。上の例では、ターゲットとして「"aspnet50"」(デスクトップ版CLR)と「"aspnetcore50"」(Core CLR)の二つが定義されていて、後者の場合はこれがSystem.Consoleアセンブリにも依存していることが分かる(Core CLRはデスクトップ版のCLRよりもモジュール化が進んでいる分、依存関係の記述は細かくなる)
- "configurations": 構成情報を記述("Debug"、"Release"など)
- "commands": kコマンドに渡すコマンド名とそのコマンド名で実行されるコマンドを記述(後述)
この他にも「"sources"」(コンパイル対象のファイルを指定)、「"WebRoot"」(Webアプリのルートディレクトリを指定)などの設定を記述可能だ。詳細についてはaspnet/Home以下の「Project.json file」(英語)を参照のこと。
なお、取得したアセンブリは「~/.k/packages」ディレクトリ(OS X)あるいは「~/.kpm/〜」ディレクトリ(Ubuntu)に格納される。
Copyright© Digital Advantage Corp. All Rights Reserved.