SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?

ASP.NET Coreの概要を理解してセットアップしよう

いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは? 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

(1)ビルド/実行方法: .NET Coreの主要ツール「dotnetコマンド」

 .NET Coreでは、「dotnet」というコマンドライン(.NET Core CLIツール)を使用して「依存解決」「ビルド」「実行」「デプロイ」に関する処理をマルチプラットフォームで管理することができます。このログにある「dotnet.exe restore」という部分では、依存するアセンブリとツールを取得しています。

 これまでは「MsBuild」「NuGetコマンド」「Visual Studio」といったさまざまなツールを使っていた作業をdotnetコマンドで一括操作できます。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」に移動していることが分かります。

リスト2 アプリケーション設定「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ファイルには、プロジェクト情報や依存アセンブリ情報として、以下の設定を記述できます。

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の概要、セットアップ、全体構成、依存解決に関する主な内容について紹介してきました。次回は、クライアント系パッケージ管理、実行時の挙動、コードの内容についてご紹介します。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9681 2016/12/14 10:40

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング