🫐

.NET(C#)での開発の基礎の基礎

2023/11/25に公開

.NET(C#)の基本をまとめました。

設定ファイル等の理解が曖昧すぎました...。

.NET SDK

  • .NETでの開発に必要なツールをまとめたもの
  • クロスプラットフォーム対応のため、Windows以外のLinuxやmacOSでも動作する

.NETでの開発では必須なので、下記からダウンロードします。

https://dotnet.microsoft.com/ja-jp/download/dotnet

dotnet コマンド

.NET SDKをインストールすると使えるようになるコマンドです。
アプリケーションのビルド・実行・テスト・デプロイなどを行えます。

dotnet run

.NETアプリケーションのソースコードをビルドし、ビルドによって生成されたアーティファクトを実行するコマンドです。このコマンドを実行した後の流れは以下の通りです。

  • プロジェクトファイル(***.csproj)に基づいて、ソースコードがビルド(コンパイル&依存関係の組み込み)される
  • ビルドによって実行可能ファイル(exeファイルなど)が生成され、それが自動的に実行される

主要設定ファイル

appsettings.json

  • アプリケーションの主要な設定ファイル
  • 環境に依存しない設定を書く場所
{
  "ApplicationName": "MyApp",
  "Version": "1.0"
}

appsettings.{Environment}.json

  • 環境(開発、本番、ステージングなど)に特有の設定を置く場所
  • アプリケーションは実行時に、環境に応じた適切な設定ファイルを読み込む

appsettings.Local.json

  • 個々の開発者のローカル環境用の設定を置く場所
  • .gitignoreファイルによってgit管理から除外されることが多いため、開発者が設定をカスタマイズできる

Properties/launchSettings.json

  • Visual Studio や dotnet run コマンドでアプリケーションを実行する時の設定を置く場所
  • 使用するポート番号、環境変数、アプリケーションが起動する際の URL など
  • 主にローカルでの開発時に使用される

これらのファイルは、Program.csやStartup.csで読み込まれることが多いです。実行環境は、ASPNETCORE_ENVIRONMENTという環境変数で設定します。

{
  "profiles": {
    "MyApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

***.csprojファイル

  • C#プロジェクトファイル
  • XML形式のファイルであり、プロジェクトの設定、依存関係(ライブラリやパッケージ)、コンパイルするソースファイルのリスト、その他のビルド設定などが含まれる
  • プロジェクトのビルド方法や実行方法を定義するためのもの
  • dotnetツールはこのファイルを使用して、プロジェクトのビルドや実行を行う
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
  </ItemGroup>

</Project>

Program.csファイルサンプル

appsettings.json
{
  "ApplicationName": "MyApp",
  "Version": "1.0"
}
appsettings.Development.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug"
    }
  }
}

appsettings.jsonappsettings.Development.jsonの設定を使うサンプル

using System;
using Microsoft.Extensions.Configuration;

class Program
{
    static void Main(string[] args)
    {
        // 現在の環境を取得("Development"、"Production"、"Local"など)
	var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";
        // 設定ファイル(appsettings.jsonなど)を読み込む
        var builder = new ConfigurationBuilder()
	        // optional: 該当設定ファイルが存在しない場合にエラーにしないためにtrueとする(主に開発時にtrueにする)
	    // reloadOnChange: 設定ファイルが変更された場合に再読み込みする(主に開発時にtrueにする)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
	    // appsettings.{environment}.json
	    // appsettings.jsonと同じ項目がある場合は上書きされる
            .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true);

        // 構成をビルドする
        IConfiguration config = builder.Build();

        // 構成から設定を取得する
        var appName = config["ApplicationName"];
        Console.WriteLine(appName); // MyApp(from appsettings.json)
	
	var logLevel = config["Logging:LogLevel:Default"];
	Console.WriteLine(logLevel); // Debug(from appsettings.Development.json)
    }
}

Discussion