ASP.NET 5 on OS X Yosemite

スポンサーリンク

ほぼ毎月当たってる(毎週、次週の発表者をクジで決めている)週1の社内ミーティングのネタとして、月刊GM 2015/4月号では ASP.NET 5 on OS X Yosemite を発表したので、ASP.NET5のサンプルが動くのを確認したところまで程度で。
スライド自体は公表できないので勘弁。

動作確認した環境情報

  • OS X Yosemite 10.10.3
  • Homebrewは導入済み(導入については他サイトを参照のこと)

DNVMの導入

Insider.NET > 業務アプリInsider > 連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド – @IT(2015年2月20日の記事)によると、KVM(K Version Manager)/ XRE(Cross-Platform Runtime Environment)をインストールするように書かれていますが、今では DNVM(.NET Version Manager) / DNX (.NET Execution Environment)を使うそうです。

きっと KVM / XRE でも動くかと思うけど、約2ヶ月前の記事が参考にならないとは…

さて、気を取り直して、DNVM のインストールです。GitHubにも書かれている通り、OS X では Homebrew 経由でインストールするのがベストということなので、Homebrew を使用してインストールを行います。

tapコマンドでリポジトリを追加します。

% brew tap aspnet/dnx
==> Tapping aspnet/dnx
Cloning into '/usr/local/Library/Taps/aspnet/homebrew-dnx'...
remote: Counting objects: 100, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 100 (delta 1), reused 0 (delta 0), pack-reused 96
Receiving objects: 100% (100/100), 16.85 KiB | 0 bytes/s, done.
Resolving deltas: 100% (49/49), done.
Checking connectivity... done.
Tapped 2 formulae (27 files, 128K)

updateコマンドでFormulaの更新を行い、DNVMをインストールします。

% brew update
Updated Homebrew from b8bb0f54 to 6193d9f4.
==> New Formulae
(省略)
==> Updated Formulae
(省略)
==> Deleted Formulae
(省略)
% brew install dnvm
==> Installing dnvm from aspnet/homebrew-dnx
==> Installing dnvm dependency: mono
==> Downloading https://homebrew.bintray.com/bottles/mono-4.0.1.yosemite.bottle.
Already downloaded: /Library/Caches/Homebrew/mono-4.0.1.yosemite.bottle.tar.gz
==> Pouring mono-4.0.1.yosemite.bottle.tar.gz
==> Caveats
To use the assemblies from other formulae you need to set:
  export MONO_GAC_PREFIX="/usr/local"
==> Summary
🍺  /usr/local/Cellar/mono/4.0.1: 1004 files, 178M
==> Installing dnvm
==> Cloning https://github.com/aspnet/Home.git
Updating /Library/Caches/Homebrew/dnvm--git
==> Checking out branch dev
==> bash -c 'source /usr/local/Cellar/dnvm/1.0.0-dev/libexec/dnvm.sh; dnvm upgra
==> Caveats
Add the following to the ~/.bash_profile, ~/.bashrc or ~/.zshrc file:

  source dnvm.sh

==> Summary
🍺  /usr/local/Cellar/dnvm/1.0.0-dev: 4 files, 56K, built in 7 seconds

dnvm.shを読み込むように~/.zshrc(zshを利用している)に追記します。

% echo "### .Net Version Manager\nexport MONO_GAC_PREFIX=\"/usr/local\"\nsource dnvm.sh\nexport MONO_MANAGED_WATCHER=false" >> ~/.zshrc
% tail ~/.zshrc

### .Net Version Manager
export MONO_GAC_PREFIX="/usr/local"
source dnvm.sh
export MONO_MANAGED_WATCHER=false
% source ~/.zshrc
%

最新のDNXにアップグレードする

最新のDNXにアップグレードします。が、最初は最新が入っているようなので行わなくても問題ありません。

% dnvm upgrade
Determining latest version
Latest version is 1.0.0-beta4
dnx-mono.1.0.0-beta4 already installed.
Adding /Users/nanashi/.dnx/runtimes/dnx-mono.1.0.0-beta4/bin to process PATH
Updating alias 'default' to 'dnx-mono.1.0.0-beta4'

現在インストールされているDNXを確認する

現在インストールされているDNXを確認する方法は、以下のとおりです。

% dnvm list

Active Version              Runtime Arch Location             Alias
------ -------              ------- ---- --------             -----
  *    1.0.0-beta4          mono         ~/.dnx/runtimes      default

%

ちなみにWindows(Windows 8.1)上で行うと以下の様な出力がされます。

C:\Users\Nanashi>dnvm list

Active Version     Runtime Architecture Location                        Alias
------ -------     ------- ------------ --------                        -----
       1.0.0-beta4 clr     x86          C:\Users\Nanashi\.dnx\runtimes default



C:\Users\Nanashi>

RuntimeがCLRかmonoの違いとアーキテクチャ情報が出てる、出てないぐらいっぽい…?

サンプルを動かす (HelloWeb編)

GitHubにサンプル(HelloWeb, HelloMVC, ConsoleApp)があるので、それを動かしてみます。
まずは、HelloWebからです

sampleディレクトリ以下には、1.0.0-beta4用とlatest用の2つのディレクトリがあります。

aspnet_sample_target_versions

1.0.0.0-beta4とlatestの違いは、以下の通りで呼び出すランタイムのバージョン違いのみで、現在1.0.0-beta4しか入っていないのでどちらでも同じです。

% diff -r --strip-trailing-cr ./latest/HelloWeb/ ./1.0.0-beta4/HelloWeb/
diff -r --strip-trailing-cr ./latest/HelloWeb/project.json ./1.0.0-beta4/HelloWeb/project.json
13,18c13,18
<         "Kestrel": "1.0.0-*",
<         "Microsoft.AspNet.Diagnostics": "1.0.0-*",
<         "Microsoft.AspNet.Hosting": "1.0.0-*",
<         "Microsoft.AspNet.Server.IIS": "1.0.0-*",
<         "Microsoft.AspNet.Server.WebListener": "1.0.0-*",
<         "Microsoft.AspNet.StaticFiles": "1.0.0-*"
---
>         "Kestrel": "1.0.0-beta4",
>         "Microsoft.AspNet.Diagnostics": "1.0.0-beta4",
>         "Microsoft.AspNet.Hosting": "1.0.0-beta4",
>         "Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
>         "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
>         "Microsoft.AspNet.StaticFiles": "1.0.0-beta4"
Only in ./1.0.0-beta4/HelloWeb/: project.lock.json

ここでは、1.0.0-beta4ディレクトリのを使用して行きます。

% cd 1.0.0-beta4/HelloWeb/
% ls
HelloWeb.xproj Properties     Startup.cs     project.json   wwwroot
%

dnu restoreコマンドで必要なパッケージを取得します。

% dnu restore
Restoring packages for /Users/Nanashi/work/Home/samples/1.0.0-beta4/HelloWeb/project.json
(中略)
Writing lock file /Users/Nanashi/work/Home/samples/1.0.0-beta4/HelloWeb/project.lock.json
Restore complete, 421592ms elapsed
%

dnx . kestrelコマンドで起動します。

% dnx . kestrel
Started 

http://localhost:5004/ へアクセスし、動作を確認します。

ASP.NET 5 HelloWeb

ASP.NET 5 HelloWeb

サンプルを動かす (HelloMVC編)

方法は HelloWeb 編と同じでした…
特に変わったとこはないです。はい

ASP.NET 5 HelloMVC

ASP.NET 5 HelloMVC

ちなみに、発表した4月30日にはproject.jsonのdependenciesのバージョン指定がおかしくて、エラーが発生していたけど、もう治ってた

最後に

ASP.NET 5 は、VisualStudio を使わなくてもプロジェクトを作成できる(Yeomanで作成)し、OS X な環境だけで Vagrant を使って簡単に開発環境は整備できるようになりそうなので今後に期待デス。

参考ページ

コメント

タイトルとURLをコピーしました