1. ホーム
  2. c#

WPF .NET 5、.NET 6または.Net CoreのUserSettings / ApplicationSettingsに相当するものです。

2023-10-20 05:01:55

質問

.NET 5、.NET 6 または .Net Core >=3.0 を使用した WPF アプリケーションのユーザー設定を保持するための好ましい方法は何ですか?

WPF .Net Core 3.0 プロジェクトを作成しました(VS2019 V16.3.1)。 現在、Properties.Settingsの項目が無くなっているのを確認しました。

オンライン検索の後、Microsoft.Extensions.Configurationに飛び込み始めました。

設定にアクセスするための肥大化したコードの横に、さらに悪いことに -> 保存されない?

.NET Coreでのユーザー構成設定

幸か不幸か、Microsoft.Extensions.Configurationは は設計上、保存をサポートしていません。詳細はこの Github issue をご覧ください。 なぜ はConfigurationProviderで保存しないのですか?



.Net Core >=3.0でWPFアプリケーションのユーザー設定を永続化するための好ましい(そして簡単/高速/単純な)方法は何ですか?

以前は
  • プロパティーに変数を追加する。



  • 起動時に変数を読み込む

    var culture = new CultureInfo(Properties.Settings.Default.LanguageSettings);



  • 変数が変更されたら -> すぐに保存する。

    Properties.Settings.Default.LanguageSettings = selected.TwoLetterISOLanguageName; Properties.Settings.Default.Save();

どのように解決するのですか?

例えば、Properties -> Add -> New Item上で右クリックし、"Settings"を検索することで、昔ながらの設定ファイルを追加することができます。このファイルは設定デザイナーで編集でき、以前の .net framework プロジェクトと同様に使用できます (ConfigurationManager, Settings.Default.Upgrade(), Settings.Default.Save などは動作します)。

app.config ファイルをプロジェクトのルート フォルダに追加し (同じ方法で Add -> New Item を使用)、設定をもう一度保存して、プロジェクトをコンパイルすると、出力フォルダに .dll.config ファイルが見つかります。以前と同様に、デフォルトのアプリの値を変更することができます。

Visual Studio 1.16.3.5 と .net core 3.0 WPF プロジェクトでテストされました。