Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

ASP.NET Coreアプリケーションをビルドして起動してみよう

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 本稿では、WindowsだけではなくMacやLinuxといったマルチプラットフォームで動作するASP.NET Core 1.0について紹介します。前編では、ASP.NET Coreの概要、セットアップ方法、project.jsonファイルについて紹介しました。中編にあたる本稿では、依存ファイルの解決方法、新しいツール、実行時の挙動等について紹介します。

目次

 それでは、ASP.NET Coreについてご紹介していきます。前編の続きとなりますが、ASP.NET Coreプロジェクトを最初に開いた場合、出力ウィンドウには、以下のメッセージが表示されています。

リスト1 Visual StudioでASP.NET Coreアプリを最初に開いたときの出力ログ(抜粋)
【前編で紹介済:ビルド/実行方法: 「dotnet.exe restore」コマンド】
C:\Program Files\dotnet\dotnet.exe restore "C:\CodeZine\.vs\nestore.dg" -s "C:\Program Files (x86)\Microsoft SDKs\NuGetPackages"

【前編で紹介済:プロジェクトファイル: project.jsonの読み込み】
Restoring packages for C:\CodeZine\AspNetCoreSample\project.json...

【(1)依存解決: 必要なパッケージをNuGetで解決】
Installing Newtonsoft.Json 9.0.1.

【(4)JavaScript/CSSのバンドル・ミニファイ】
Restoring packages for tool 'BundlerMinifier.Core'

【(5)Razorツール】
Restoring packages for tool 'Microsoft.AspNetCore.Razor.Tools'

【(6)ASP.NET Coreと連携するIISモジュール】
Restoring packages for tool 'Microsoft.AspNetCore.Server.IISIntegration.Tools'

【(2)プロジェクトファイル: project.lock.jsonファイル出力】
Writing lock file to disk. Path: C:\CodeZine\AspNetCoreSample\project.lock.json

【(3)プロジェクトファイル: 「*.xproj」プロジェクトファイル】
C:\CodeZine\AspNetCoreSample\AspNetCoreSample.xproj

 前編に引き続き、このメッセージの内容に沿って、ASP.NET Coreにおける大きな変更点について紹介していきます。

(1)必要なパッケージ/アセンブリをNuGetで解決

 「dotnet restore」コマンドの実行結果として、出力ログに「Installing Newtonsoft.Json...」という外部パッケージを取得するメッセージに注目しましょう。この部分では「project.json」の内容に従い、アセンブリの依存関係を解析し、そのファイルがローカルPCに存在しているかを確認しています。

 このパッケージの解決順はVisual Studioの[オプション]−[NuGetパッケージマネージャ]−[パッケージソース]ウィンドウから、設定を確認することができます。

Visual StudioのNuGet設定画面
Visual StudioのNuGet設定画面

 この場合、以下の順序でパッケージの取得が実施されるため、ローカルPCに存在しない場合のみ、NuGetリポジトリからインターネット越しに取得されます。

  1. 「C:\Program Files (x86)\Microsoft SDKs\NuGetPackages」…ローカルPCのオフラインフォルダ
  2. https://api.nuget.org/v3/index.json」…インターネット上のNuGet.orgリポジトリ

 以前のASP.NETアプリケーションでは、取得した参照パッケージを各プロジェクトのフォルダの中に格納していましたが、ASP.NET Core(.NET Core)の場合、取得したアセンブリは、「C:\Users\<ユーザー名>\.nuget\packages\」というユーザー固有の共有フォルダに格納されます。

(2)依存情報をキャッシュする「project.lock.json」ファイル

 「dotnet restore」コマンドが実行されると、結果として「project.lock.json」というファイルが生成されます。このファイルには、project.jsonの参照設定やNugetの設定に応じた依存関係が出力されます。このファイルが無いとビルドを行うことができません(そのため、Visual Studioでは削除した瞬間に復元されます)。

(3)プロジェクトファイル「*.xproj」

 ASP.NET Coreでは、従来の「*.csproj(C#)」や「*.vbproj(VB)」とは異なり、新しいプロジェクトファイル形式「*.xproj」が利用されています。アセンブリや使用ファイルの設定は「project.json」に記載されているため、「xprojファイル」には、主にVisual Studioに関する設定が記載されます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5