(VB.Net) Net9では App.config が使用できない件 - tsukimisoba/Blog GitHub Wiki
2025/05/21 記載
.NET 9
では、System.Configuration.ConfigurationManager
の代替として
Microsoft.Extensions.Configuration
を使用するのが推奨されています。
これは、.NET Core 以降のクロスプラットフォーム環境 に適した設定管理ライブラリです。
Microsoft.Extensions.Configuration
の導入
1. まず、以下の 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
IConfiguration
を使用した設定の読み込み
2. 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
IConfiguration
を DIコンテナに登録
3. 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
IConfiguration
の主なメソッド
4. メソッド | 説明 |
---|---|
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 を使用してアプリケーションの設定を管理できます
詳細な情報はこちらも参考にしてください。