Visual Studio 2017 が、2017/03/07 に、リリースされて、約 1 カ月が経ちます。
その間に、すでに、4 回の更新がリリースされています。
Visual Studio 2017 リリース ノート
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes
この Visual Studio 2017 のリリースで良いところは、色々ありますが、特に良いなと思っているのが、"ASP.NET Core Web アプリケーション" が標準で開発できること。
この Visual Studio 2017 では、標準で "ASP.NET Core Web アプリケーション" のプロジェクト テンプレートが選択できます。
現状では、今までの .NET Framework のすべての API をサポートしているわけではないものの、Linux でも動作可能な ASP.NET Web アプリケーションを開発できるというのは、大きなメリットです。
積極的に "ASP.NET Core Web アプリケーション" を選択し、開発していきましょう!
プロジェクトの新規作成で、"ASP.NET Core Web アプリケーション(.NET Core)" を選択すると、 さらに、ASP.NET MVC のテンプレートが選択可能なダイアログが表示されます。
ネイティブ アプリのバックエンドとして、RESTful な Web サービスを開発する場合は、[Web API] を Web アプリケーションを開発する場合は、[Web アプリケーション] を選択ください。
[Web アプリケーション] を選択した場合、テンプレートが生成され、実行すると、今までの ASP.NET MVC のテンプレートと同様の Web アプリケーションが生成されていることが分かります。
ただ、クロスプラットフォーム対応のための変更点もいくつかあります。
"web.config" がありません。"appsettings.json" に置き換えられています。
XML ベースから、jSON ベースのフォーマットに変更されています。
また、IIS 固有の機能である URL リライトのルール設定等が、構成ファイルベースで定義できないことも注意点です。
この構成情報ですが、コード上でロードの処理が定義されています。
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
上記のコードは、テンプレートで生成されたコードの Startup クラスの Startup メソッドですが、ここに構成情報のロードの処理が定義されています。
後に定義されている方の構成情報でオーバーライトされます。
以下の順の優先順位となります。
appsettings.json < appsettings.%ASPNETCORE_ENVIRONMENT%.json < 環境変数
環境変数で構成情報の設定を行う場合、":" をセパレーターにして環境変数の名前を定義します。
例) "Logging:IncludeScopes"
この環境変数の定義は、本番環境利用時、Azure App Services や Linux 環境での利用が考えられます。
.NET Core への移行は、IIS 固有の機能を利用している場合には、検討が必要となりますが、それ以外の場合では、いよいよ実用レベルに各機能が充実してきたと感じています。