🫐
.NET(C#)での開発の基礎の基礎
.NET(C#)の基本をまとめました。
設定ファイル等の理解が曖昧すぎました...。
.NET SDK
- .NETでの開発に必要なツールをまとめたもの
- クロスプラットフォーム対応のため、Windows以外のLinuxやmacOSでも動作する
.NETでの開発では必須なので、下記からダウンロードします。
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.json
とappsettings.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