演習 - テンプレートから ASP.NET Core Web アプリ プロジェクトを作成する

完了

この演習では、次のことを行います。

  • テンプレートから ASP.NET Core Web アプリ プロジェクトを作成します。
  • 作成されたプロジェクトの構造を確認します。

テンプレートを使用して ASP.NET Core Web アプリを作成する

Visual Studio Code で、以下のように新しいプロジェクトを作成します。

  1. 以下のように [エクスプローラー] ビューを選択します。

    [エクスプローラー] ビューの選択の様子のスクリーンショット。

  2. [.NET プロジェクトの作成] ボタンを選択します。 あるいは、[コマンド パレット]Ctrl+Shift+P キーで呼び出し、「.NET」と入力して、.NET: New Project コマンドを見つけて選択することもできます。

    [.NET プロジェクトの作成] の選択の様子のスクリーンショット。

  3. 一覧から ASP.NET Core Empty プロジェクト テンプレートを選択します。

  4. [プロジェクトの場所] ダイアログで、プロジェクトを含めるための MyWebApp という名前のフォルダーを作成します。

  5. コマンド パレットで、大文字と小文字を区別してプロジェクトに MyWebApp という名前を付けます。 この指示内のコードの名前空間を自分の名前空間と一致させるためには、これと全く同じプロジェクト名を使用することが重要です。

  6. コマンド パレットから [プロジェクトの作成] を選択します。

プロジェクトの構造を確認する

以下のように MyWebApp プロジェクト フォルダーの内容が Visual Studio Code の [エクスプローラー] に表示されます。

Visual Studio Code エクスプローラー内のプロジェクト ファイルのスクリーンショット。

ターミナルまたはコマンド ラインから、以下のようにして新しいプロジェクトを作成します。

  1. プロジェクトを含めるディレクトリに移動します (cd)。

  2. 以下のように .NET CLI コマンドの を実行して、dotnet new という名前のディレクトリ内に ASP.NET Core Web アプリを作成します。

    dotnet new web -o MyWebApp
    

    新しい空の ASP.NET Core Web プロジェクトが、MyWebApp という名前のディレクトリ内に作成されます。

    コマンド構文の概要を以下に示します。

    • dotnet new:テンプレートに基づいて、プロジェクト、ソリューション、ライブラリ、構成、その他の特殊なファイルなどのさまざまな .NET 開発成果物を作成するための .NET CLI コマンド。
    • web:サンプル コンテンツを含まない空の ASP.NET Core Web プロジェクトを作成するために使用されるプロジェクト テンプレート。 web は、.NET SDK 内で利用できる多くの組み込みプロジェクト テンプレートの 1 つです。
    • -o:この出力オプションは、新しいプロジェクトが作成されるディレクトリを以下のように決定します。
      • ディレクトリが存在しない場合は、.NET CLI によって作成されます。
      • プロジェクトの作成先となるディレクトリは、既定のプロジェクト名、名前空間、およびアセンブリ名 (コンパイルされた出力の名前) として機能します。
      • 出力オプション -o <directory> が使用されていない場合は、現在のディレクトリが使用されます。
  3. MyWebApp プロジェクト フォルダーを開きます。

プロジェクトの構造を確認する

以下のように MyWebApp プロジェクト フォルダーの内容が Visual Studio Code の [エクスプローラー] に表示されます。

Visual Studio Code エクスプローラー内のプロジェクト ファイルのスクリーンショット。

以下のセクションでは、空の ASP.NET Core プロジェクトの主要なプロジェクト フォルダーとファイルの概要について説明します。

MyWebApp.csproj プロジェクト ファイル

.csproj プロジェクト ファイルは、以下の用途で使用されます。

  • プロジェクトのビルド方法を構成する
  • どのバージョンの .NET をターゲットとするかを指定する
  • プロジェクトの依存関係を管理する

.sln ソリューション ファイル

Visual Studio Code 内で、(C# Dev Kit 拡張機能を使用して) ASP.NET Core プロジェクトが作成または開かれると、[project name].sln というソリューション ファイルが作成されます。 [project name].sln ソリューション ファイルには、1 つ以上の関連プロジェクトの情報が含まれており、これにはビルド情報、設定、1 つの特定のプロジェクトには関連付けられないその他のファイルなどが存在します。

obj フォルダー

obj フォルダーには、ソース ファイルから生成されたコンパイル済みオブジェクト ファイルなど、ビルド システムによって使用される中間ファイルが含まれています。 最終的なビルド出力は、ビルド プロセス中に作成された bin フォルダー内に配置されます。

Properties/launchSettings.json ファイル

Properties/launchSettings.json ファイルには、開発中のアプリの起動方法に関する構成データが含まれています。 これらの設定には、applicationUrl (https://localhost:{port} はプロジェクトの作成時に割り当てられるランダムのローカル ポート番号) などのアプリが使用するルート URL を指定する {port} プロパティが含まれます。

launchSettings.json ファイルには、以下の構成が含まれています。

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5218",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7140;http://localhost:5218",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Program.cs ファイル

Program.cs ファイルは、ASP.NET Core アプリのためのエントリ ポイントとして機能し、以下を含むいくつかの重要な役割を持っています。

  • ホストの構成:Web サーバーの設定を含め、ホストを構成します。
  • サービスの登録:データベース コンテキスト、ログ、特定のフレームワーク用の特殊なサービスなどのサービスをアプリの機能に追加します。
  • ミドルウェア パイプラインの構成:アプリの要求処理パイプラインを一連のミドルウェア インスタンスとして定義します。
  • 環境の構成:開発、ステージング、運用それぞれの環境固有の設定を設定します。

作成した新しい空の ASP.NET Core プロジェクトでは、Program.cs ファイルに以下の最小限のコードが含まれています。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

このファイルの以下のコード行は、事前構成された既定値を使用して WebApplicationBuilder を作成し、アプリをビルドします。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet() メソッドは、以下のように HTTP GET 要求を処理するエンドポイントを直接定義します。

app.MapGet("/", () => "Hello World!");

app.MapGet("/"):HTTP GET 要求のルートを定義します。 / は、このルートがアプリのルート URL に対して行われた要求に応答することを意味します。 たとえば http://localhost:{port}/ です。ここで {port} は、プロジェクトの作成時に Properties/launchSettings.json ファイル内で割り当てられたランダム割り当てのポート番号です。

() => "Hello World!":要求ハンドラーとして機能するラムダ式。 ルート URL に対して GET 要求が行われると、このラムダ式が実行され、文字列 "Hello World!" が返されます。