それでは、ASP.NET Coreについてご紹介していきます。前編の続きとなりますが、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パッケージマネージャ]−[パッケージソース]ウィンドウから、設定を確認することができます。
この場合、以下の順序でパッケージの取得が実施されるため、ローカルPCに存在しない場合のみ、NuGetリポジトリからインターネット越しに取得されます。
- 「C:\Program Files (x86)\Microsoft SDKs\NuGetPackages」…ローカルPCのオフラインフォルダ
- 「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に関する設定が記載されます。