(1)ビルド/実行方法: .NET Coreの主要ツール「dotnetコマンド」
.NET Coreでは、「dotnet」というコマンドライン(.NET Core CLIツール)を使用して「依存解決」「ビルド」「実行」「デプロイ」に関する処理をマルチプラットフォームで管理することができます。このログにある「dotnet.exe restore」という部分では、依存するアセンブリとツールを取得しています。
これまでは「MsBuild」「NuGetコマンド」「Visual Studio」といったさまざまなツールを使っていた作業をdotnetコマンドで一括操作できます。dotnetコマンドの主要な引数は下表のとおりです。
| 引数 | 概要 |
|---|---|
| *.dll | 指定アプリケーション実行 |
| build | ビルド実行(binフォルダ/アセンブリを出力) |
| new | 新しいプロジェクトひな形の作成(Program.csを出力) |
| pack | NuGetパッケージの作成 |
| publish | 依存ファイルを格納し発行(デプロイ)準備 |
| restore | 依存ライブラリの解決(project.lock.jsonを出力) |
| run | (ビルドと)アプリケーション実行 |
| test | ユニットテストの実行 |
Visual Studioで操作していると、dotnetコマンドを意識しなくても開発できますが、他の環境で操作する場合は、dotnetコマンドを理解して操作する必要があります。そのため、「dotnet restore」「dotnet build」「dotnet run」といった基本引数は理解しておくと良いでしょう。
(2) プロジェクト設定「project.json」ファイル
ASP.NET Coreでは、プロジェクト設定は「project.json」というファイルで管理します。生成された「project.json」を見てみると、以前は「pakage.config」や「Web.config」で管理していた情報の多くが「project.json」に移動していることが分かります。
{
【↓使用するフレームワークを指定】
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
【↓使用するパッケージを指定。NuGetパッケージ名とバージョンで指定】
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},
【↓使用するツールを指定。NuGetパッケージ名とバージョンで指定】
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
【↓プロジェクトがサポートするフレームワーク名をTFMS(モニカ)という記法で指定】
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"frameworks": {
"net461": { }
},
【↓ビルド時の設定】
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
【↓実行時の設定】
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
【↓発行時の設定】
"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"appsettings.json",
"web.config"
]
},
【↓ビルド時イベント、発行イベントの設定】
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
上記のコードのとおり、project.jsonでは使用するアセンブリの情報を「dependencies」セクションに記載します。例えば、Microsoft.AspNet.Mvcのバージョン1.0.0と記述しておけば、NuGetからこれらのDLL群を取得してくれます。
project.jsonファイルの記載内容
project.jsonファイルには、プロジェクト情報や依存アセンブリ情報として、以下の設定を記述できます。
| 属性名 | 概要 |
|---|---|
| name | パッケージの名前 |
| version | パッケージのセマンティックバージョニング番号 |
| description | 説明 |
| copyright | コピーライト |
| title | プロジェクトのフレンドリーネーム |
| entryPoint | エントリーポイントのメソッド名(デフォルトはMain) |
| testRunner | テストランナーのツール名 |
| authors | 作者名 |
| language | プロジェクトの自然言語(en-US形式) |
| embedInteropTypes | COM Interopの有無 |
| preprocess | 前処理で含めるファイル |
| shared | ライブラリエクスポート用共有ファイル |
| dependencies | 依存アセンブリ情報 |
| tools | 使用ツール |
| scripts | イベント(precompile、postcompile、prepublish、postpublish)で実行するスクリプト処理 |
| buildOptions | ビルドの設 |
| publishOptions | 発行設定 |
| runtimeOptions | ランタイム設定 |
| packOptions | パッケージング設定 |
| analyzerOptions | コード分析設定 |
| configurations | DebugやReleaseといったプロジェクトの設定 |
| frameworks | プロジェクトがサポートするフレームワーク |
詳細は、project.jsonの説明ページをご覧ください。
project.jsonの設定方法
[NuGetパッケージマネージャ]ウィンドウで設定した内容は「project.json」に反映されます。Visual Studio 2015(Update3)では、.NET Coreライブラリに対して[参照設定]のGUI画面で設定することはできないため、project.jsonを直接編集する必要があります。project.jsonの編集時には、インテリセンスを使ってライブラリとバージョンを選択することができます。
最後に
以上、本稿ではASP.NET Coreの概要、セットアップ、全体構成、依存解決に関する主な内容について紹介してきました。次回は、クライアント系パッケージ管理、実行時の挙動、コードの内容についてご紹介します。
参考資料
- .NET Core 1.0(Microsoft 井上 章さん)
- しばやん雑記(ASP.NET Coreカテゴリ)
- Hello World, ASP.NET Core1.0(Microsoft 赤間 信幸さん)
- Entity Framework Core 1.0正式リリース(Microsoft 井上 大輔さん)
- Essential .NET - Visual Studio 2015 と .NET Core ツール(MSDNマガジン)
- .NET Core - .NET Core による .NET のクロスプラットフォームへの移行(MSDN マガジン)
- .NET Platform Standard日本語訳(atsushienoさん)
- ASP.NET Core 1.0の概要を整理する(ryuichi111stdさん)
