ほぼ毎月当たってる(毎週、次週の発表者をクジで決めている)週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つのディレクトリがあります。
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/ へアクセスし、動作を確認します。
サンプルを動かす (HelloMVC編)
方法は HelloWeb 編と同じでした…
特に変わったとこはないです。はい
ちなみに、発表した4月30日にはproject.jsonのdependenciesのバージョン指定がおかしくて、エラーが発生していたけど、もう治ってた。
最後に
ASP.NET 5 は、VisualStudio を使わなくてもプロジェクトを作成できる(Yeomanで作成)し、OS X な環境だけで Vagrant を使って簡単に開発環境は整備できるようになりそうなので今後に期待デス。
コメント