.NETでSettings.settingsファイルを使用する場合、設定は実際にどこに保存されますか?保存した設定を削除してデフォルトの状態に戻したいのですが、保存されている場所が見つかりません...
選択した設定が「ユーザー」スコープか「アプリケーション」スコープかによって異なります。
ユーザースコープの設定は次の場所に保存されます
C:\ Documents and Settings \ username \ Local Settings\Application Data \ アプリケーション名
実行時にそれらを読み書きできます。
VistaおよびWindows 7の場合、フォルダーは
C:\ Users \ username \ AppData\Local \ アプリケーション名
または
C:\ Users \ username \ AppData\Roaming \ アプリケーション名
アプリケーションスコープの設定はAppName.exe.config
に保存され、実行時には読み取り専用です。
以下は、user.configファイルの場所をプログラムで取得するために使用できるスニペットです。
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings(すなわち、settings.settings)は、デフォルトでユーザー設定にPerUserRoamingAndLocalを使用します(覚えているように)。
更新:奇妙ですが、ここには間違った答えが多すぎます。ユーザースコープの設定ファイル(user.config)を探している場合、次のフォルダー(Windows XPの場合)にあります。
C:\ Documents and Settings \(username)\ Local Settings\Application Data \(company-name-if-exists)\(app-name).exe_(Url | StrongName)_(hash)\(app-version)\
UrlまたはStrongNameは、アセンブリの厳密な名前をアプリケーションに適用するかどうかによって異なります。
Webアプリケーションではなくデスクトップについて話していると仮定すると:
プロジェクトに設定を追加すると、VSはプロジェクトディレクトリにapp.config
という名前のファイルを作成し、そのファイルに設定を保存します。また、個々の設定への静的アクセサーを提供するSettings.cs
ファイルも構築します。
コンパイル時に、VSは(デフォルトで、これを変更できます)app.config
をビルドディレクトリにコピーし、その名前を実行可能ファイルに合わせて変更します(たとえば、実行可能ファイルの名前がfoo.exe
の場合、ファイルはfoo.exe.config
)という名前を付けます。これは、.NET構成マネージャーが実行時に設定を取得するときに検索する名前です。
VS設定エディターで設定を変更すると、app.config
とSettings.cs
の両方が更新されます。 (Settings.cs
で生成されたコードのプロパティアクセサーを見ると、app.config
ファイルにある設定のデフォルト値を含む属性でマークされていることがわかります。) app.config
ファイルを直接編集して設定を変更すると、Settings.cs
は更新されませんが、app.config
がコピーされるため、プログラムを実行すると新しい値が引き続き使用されますコンパイル時にfoo.exe.config
に。 (ファイルのプロパティを設定して)これをオフにすると、ビルドディレクトリのfoo.exe.config
ファイルを直接編集して設定を変更できます。
次に、ユーザーを対象とした設定があります。
アプリケーションスコープの設定は読み取り専用です。プログラムはユーザースコープの設定を変更および保存できるため、各ユーザーが独自の設定を持つことができます。これらの設定はfoo.exe.config
ファイルには保存されません(少なくともVistaでは、プログラムは昇格なしではProgram Files
のサブディレクトリに書き込むことができないため)。それらはユーザーのアプリケーションデータディレクトリの構成ファイルに保存されます。
そのファイルへのパスは%appdata%\%publisher_name%\%program_name%\%version%\user.config
です。 C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
。プログラムに厳密な名前を付けた場合、このパスのプログラム名に厳密な名前が追加されることに注意してください。
ブラウズしてフォルダー名のハッシュを把握していると、( この回答 を介して)出会いました:
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(編集:ウェイバックマシンリンク: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979 .aspx )
user.config
ファイルの正確なパスは次のようになります。
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
どこ
<Profile Directory>
-移動プロファイルディレクトリまたはローカルディレクトリです。設定はデフォルトでローカルuser.config
ファイルに保存されます。ローミングuser.config
ファイルに設定を保存するには、SettingsManageabilityAttribute
をSettingsManageability
に設定してRoaming
で設定をマークする必要があります。
<Company Name>
-通常、AssemblyCompanyAttribute
で指定された文字列です(必要に応じて文字列がエスケープされ、切り捨てられます。アセンブリで指定されていない場合、フォールバック手順があります)。
<App Name>
-通常、AssemblyProductAttribute
で指定された文字列です(会社名と同じ注意事項)。
<Evidence Type>
および<Evidence Hash>
-適切なアプリドメインとアセンブリの分離を提供するために、アプリドメインの証拠から派生した情報。
<Version>
-通常、AssemblyVersionAttribute
で指定されたバージョン。これは、並べてデプロイされたアプリの異なるバージョンを分離するために必要です。ファイル名は常に単に「
user.config
」です。
えー、Settings.Default.Reset()を使用してデフォルト設定を復元することはできませんか?
ユーザーのホームフォルダー(xpではC:\ documents and settings\user、Windows Vistaではc:\ users\user)のApplication Dataフォルダーにあるアプリケーションの名前のフォルダーにあります。
いくつかの情報があります こちら も。
PS:-実行ボックスで%appdata%でアクセスしてみてください!
すべての設定は、それぞれの.configファイルに保存されます。
.settingsファイルは、一緒に属する一連の設定に厳密に型指定されたクラスを提供するだけですが、実際の設定はアプリケーションのapp.configまたは.configファイルに保存されます。
.settingsファイルを追加すると、まだ設定がない場合はapp.configが自動的に追加されて設定が格納されます。
設定ファイルがWebアプリにある場合、web.configファイル(プロジェクトのすぐ下にあります。他のタイプのプロジェクトにある場合、app.configファイル(プロジェクトの下にもあります)にあります) 。
編集
コメントで指摘されているように、設計時のアプリケーション設定は、Webアプリケーション以外のアプリケーションのapp.configファイルにあります。ビルドすると、app.configファイルが出力ディレクトリにコピーされ、yourexename。exe.configという名前が付けられます。実行時には、yourexename.exe.configという名前のファイルのみが読み取られます。
2つのファイル:1)app.configまたはweb.configファイル。設定は、テキストエディターでビルド後にカスタマイズできます。 2)settings.designer.csファイル。このファイルには、構成ファイルから設定をロードする自動生成コードがありますが、構成ファイルに特定の設定がない場合のデフォルト値も存在します。
既に回答されていますが、設定デザイナーの設定を同期してデフォルト設定に戻すことはできませんか?