C# Advent Calendarの3日目です。
先日のConnect(); 2015 で .NET CoreとASP.NET 5 がRCになりました。
そのあと、C#ユーザーグループの勉強会で Ubuntu で .NET Coreを動かそうとしたけどなかなかうまくいかないという話もあったので、一度自分で動かしてみようと思ったので、その手順のまとめまになります。
dnvm コマンド 版
まずは以前からあったdnvm
コマンドを使って .NET Core DNX SDK
をインストールする方法です。いかにもドキュメントページっぽいここにGetting-Startedがあるのですが、この手順の通りやっても動きませんでした*1。GitHubのcoreclr リポジトリのRCのついたタグが切られたドキュメントのページが一番正確なようです。今回はこのドキュメントを参考に進めました。
まずはUbuntu環境ですが、Azure上に構築しました。このとき、Ubuntuのバージョンは「14.04 LTS」にするのを強く推奨します。ドキュメントにもありますが、今のところ .NET Core はUbuntu 14.04 LTS で動作確認していて、実際 15.04 などでセットアップしてみたら、Linuxパッケージの依存関係解決などがうまくいかず挫折しました。
また、WindowsクライアントからUbuntuにログインするのに、せっかくなので Win32-OpenSSH を使ってみました。が.... 現状、配布されているssh.exe
をPowerShell Consoleで実行すると、viがまともに動かないなどの問題があるので、不本意ながらコマンドプロンプトからの実行をおすすめします。ただし、それでもペーストの文字数に制限があったりするので、Puttyなどを使うのが無難かもしれません。
さて、あとはドキュメント通りにセットアップしていきます。現状、.NET development Utility (dnu)
がmonoを必要としているのでmonoのインストールをしています。.NET Version Manager (dnvm)
をセットアップして最新のdnx
を取得したところで、自分の環境はこうなりました。
$ dnvm list Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- 1.0.0-rc2-16237 coreclr x64 linux * 1.0.0-rc2-16237 mono linux/osx default
このあと、coreclr に切り替えてサンプルプログラムを実行するのですが、coreclr に切り替えた上で、dnu restore
を実行する必要があります。
$ dnvm use 1.0.0-rc2-16237 -r coreclr $ dnu restore $ dnx run
ドキュメントだと、monoの状態で dnu restore するだけで実行できるようにも読めますが、coreclr でやっておく必要がありました。
dotnet コマンド版
さて、Connect(); のキーノートで Scott Hanselman がデモしていた.NET Command Line Interface (dotnet)
も試してみましょう。こちらに詳しい記事があります。
こちらのセットアップですが、どうも上の手順で dnvm をセットアップした環境に追加するのに失敗しました。mono の依存関係にコンフリクトが起きてしまったので、今回は別にUbuntu 14.04 LTS*2を立てて実行しました。
こちらはちゃんとドキュメントのUbuntuのところの通りにセットアップすると動きました。
Getting started with .NET Core
dotnet init
コマンドでHello World用の Program.cs
とproject.json
を勝手に作ってくれます。また、dotnet compile
で実行可能なバイナリの生成もできます。dnx とか dnvm といったコマンドが持っていた機能をラップしてまとめる様な役割が.NET Command Line Interface
の役割のようです。
さて、今回はAzure上に直にUbuntuを動かしていたわけですが、やはりDockerを使いたいということで、改めてDocker上で.NET Coreを動かすのもいずれやってみたいと思います。