(VB.Net) Net9では App.config が使用できない件 - tsukimisoba/Blog GitHub Wiki

2025/05/21 記載
.NET 9 では、System.Configuration.ConfigurationManager の代替として
Microsoft.Extensions.Configuration を使用するのが推奨されています。
これは、.NET Core 以降のクロスプラットフォーム環境 に適した設定管理ライブラリです。


1. Microsoft.Extensions.Configuration の導入

まず、以下の NuGet パッケージをインストールします。

dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Xml
dotnet add package Microsoft.Extensions.Configuration.Json
dotnet add package Microsoft.Extensions.DependencyInjection

2. IConfiguration を使用した設定の読み込み

App.config の代替

.NET 9 では、appsettings.json を使用するのが一般的です。

appsettings.json の例

{
  "ApplicationName": "MyVBApp",
  "LogLevel": "Info"
}

設定の読み込み

Imports Microsoft.Extensions.Configuration
Imports System.IO

Module Program
    Sub Main()
        ' 設定ファイルの読み込み
        Dim configBuilder As New ConfigurationBuilder()
        configBuilder.SetBasePath(Directory.GetCurrentDirectory())
        configBuilder.AddJsonFile("appsettings.json", optional:=True, reloadOnChange:=True)
        Dim configuration As IConfiguration = configBuilder.Build()

        ' 設定値の取得
        Dim appName As String = configuration.GetValue(Of String)("ApplicationName")
        Console.WriteLine("アプリ名: " & appName)
    End Sub
End Module

3. IConfiguration を DIコンテナに登録

Imports Microsoft.Extensions.Configuration
Imports Microsoft.Extensions.DependencyInjection
Imports System.IO

Module Program
    Sub Main()
        ' DIコンテナの作成
        Dim services As New ServiceCollection()

        ' 設定ファイルの読み込み
        Dim configBuilder As New ConfigurationBuilder()
        configBuilder.SetBasePath(Directory.GetCurrentDirectory())
        configBuilder.AddJsonFile("appsettings.json", optional:=True, reloadOnChange:=True)
        Dim configuration As IConfiguration = configBuilder.Build()

        ' 設定をDIコンテナに登録
        services.AddSingleton(Of IConfiguration)(configuration)

        ' サービスプロバイダの作成
        Dim provider As IServiceProvider = services.BuildServiceProvider()

        ' 設定の取得
        Dim config As IConfiguration = provider.GetService(Of IConfiguration)()
        Console.WriteLine("アプリ名: " & config.GetValue(Of String)("ApplicationName"))
    End Sub
End Module

4. IConfiguration の主なメソッド

メソッド 説明
GetValue<T>(String) 指定したキーの値を取得し、型 T に変換
GetSection(String) 指定したキーのセクションを取得
GetChildren() 直下の子セクションを取得
Bind(Object) 設定値をオブジェクトにバインド

例:

Dim logLevel As String = configuration.GetValue(Of String)("LogLevel")
Dim dbSettings As IConfigurationSection = configuration.GetSection("DatabaseSettings")

この方法で、.NET 9 でも System.Configuration.ConfigurationManager の代替として Microsoft.Extensions.Configuration を使用できます
詳細な情報はこちらも参考にしてください。


appsettings.json の設定例

以下は、appsettings.json の設定例です。
このファイルは、アプリケーションの設定情報を管理するために使用されます。


1. 基本的な設定

{
  "ApplicationName": "MyVBApp",
  "LogLevel": "Info"
}

ポイント:

  • "ApplicationName" → アプリケーション名を設定。
  • "LogLevel" → ログの出力レベルを設定。

2. データベース接続情報

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServer;Database=myDB;User Id=myUser;Password=myPassword;"
  }
}

ポイント:

  • "ConnectionStrings" → データベース接続情報を管理。
  • "DefaultConnection" → 接続文字列を設定。

3. カスタム設定

{
  "CustomSettings": {
    "NlogFilePath": "W:\\Nlog\\App.log",
    "MaxLogSize": 10
  }
}

ポイント:

  • "NlogFilePath" → NLogのログファイルの保存先を指定。
  • "MaxLogSize" → 最大ログサイズを設定。

この方法で、appsettings.json を使用してアプリケーションの設定を管理できます
詳細な情報はこちらも参考にしてください。