ASP.NET5で本番運用環境を作成しようとした時のTips
下記のページを参考に、VSTS環境に ASP.NET5 リポジトリを作成、ビルドし、WebApps + SQLサービスで本番運用するためのシステムを構築しています。ここで、はまったトピックに関して共有させてください。
下記のサイトを参考にしています。
ASP.NET5 GEtting Started
1. Application Insight は右クリックのみでは終了しない
.NET開発をする場合、Application Insight をインストールする場合、プロジェクトを右クリックし、 Application Insight をインストールする
を選択すると、ほぼ自動的にセットアップされる。ただし、ASP.NET5の場合は、下記の手順を実施する必要がある。
Microsoft/ApplicationInsights-aspnet5 / Getting Started
注: ASP.NET 5 向けの Application Insightsには次の記述が出てくるが、だまされないように(笑)
Visual Studio 2015 でプロジェクトを作成した場合、Application Insights は既に用意されています。それ以外の場合は、「ファースト ステップ ガイド」に従ってください
<- 既に用意されていますが、ASP.NET5では、いつもの手順でできませんw
2. ASP.NET5のUnitTestは、xUnitを使う
.NETの場合のテスティングツールは、一般的なNUnitやMSTestとxUnitが存在する。ASP.NET5の場合は、NUnitは使えない様子であり、xUnitが主流のようであり、実際にxUnitの手順がうまく行った。
3. xUnitの設定は、バージョンを合わせる必要がある
下記の説明にあるのだが、下記の手順で、xUnitを導入すると、参照設定が復元できないケースがある。Getting Started with xUnit.net(DNX / ASP.NET 5 これは、この記事のNOTEに記述されている、DNXのバージョンと、xunit / xunit.runner.dnx のパッケージのバージョンが不整合になっているため。
筆者の環境のdnxのバージョンは、dnvm list
コマンドを使って、現在使われている dnx を確認すると、1.0.0-rc1-update1 clr x86
である。
C:\Users\tsushi>dnvm list
Active Version Runtime Architecture Location Alias
------ ------- ------- ------------ -------- -----
1.0.0-beta5 clr x64 C:\Users\tsushi\.dnx\runtimes
1.0.0-beta5 clr x86 C:\Users\tsushi\.dnx\runtimes
1.0.0-beta5 coreclr x64 C:\Users\tsushi\.dnx\runtimes
1.0.0-beta5 coreclr x86 C:\Users\tsushi\.dnx\runtimes
1.0.0-rc1-final clr x86 C:\Users\tsushi\.dnx\runtimes
1.0.0-rc1-update1 clr x64 C:\Users\tsushi\.dnx\runtimes
* 1.0.0-rc1-update1 clr x86 C:\Users\tsushi\.dnx\runtimes default
1.0.0-rc1-update1 coreclr x64 C:\Users\tsushi\.dnx\runtimes
1.0.0-rc1-update1 coreclr x86 C:\Users\tsushi\.dnx\runtimes
この場合、上記の表を参照すると、xunitが2.1.0、xunit.runner.dnxが2.1.0-rc1-build204である必要があることがわかる。この組み合わせを、xUnitのテストプロジェクトのproject.jsonに記述する。このテストパッケージの記述には、参照元のプロジェクトの依存も書いておくとよい(ここでは、LazyTrackerWebがそれに該当する)
{
"authors": [ "tsushi" ],
"commands": {
"test": "xunit.runner.dnx"
},
"dependencies": {
"LazyTrackerWeb": "1.0.0-*",
"xunit": "2.1.0",
"xunit.runner.dnx": "2.1.0-rc1-build204"
},
"description": "LazyTrackerWeb.Test Class Library",
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"licenseUrl": "",
"projectUrl": "",
"tags": [ "" ],
"version": "1.0.0-*"
}
4. xUnitのプロジェクトは、クラスライブラリを使うこと
次の手順に従って、xUnitのプロジェクトは構成するとよい。ちなみに、 xUnitのプロジェクトはsrc配下に作っているとうまく動作しなかった。ソリューションのトップレベルに作る必要がありそう。
Getting Started with xUnit.net(DNX / ASP.NET 5)
5. データベースのマイグレーションは dnxコマンドを使用する必要がある
Entityフレームワークを使って、Modelを定義した後は、次のコマンドで、マイグレーションファイルを生成後、データベースに反映させる必要がある。
実施方法は、Startup.csを右クリック > Open Containing Folder をひらく
さらに、出てきた画面で、Contorllersのところで、Shift + 右クリック > Open command window here を選択すると、コマンドプロンプトが開くのでここで、下記のコマンドをタイプする。
dnu restore
dnvm use 1.0.0-rc1-final -p
dnx ef migrations add Initial
dnx ef database update
詳細は次の記事参照
Adding a model / Use data migrations to cerate the database
6. ASP.NET5はHostedサーバが使えない
現在のところ、Hostedサーバだと、DNX(ASP.NET5のランタイム)が無いため、ASP.NET5のソースを
ビルドすることが出来ません。これに関しては以前の記事でご紹介しましたのでご参照ください。