(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さん)