Saat menggunakan file Settings.settings di .NET, di mana sebenarnya konfigurasi disimpan? Saya ingin menghapus pengaturan yang disimpan untuk kembali ke keadaan default, tetapi tidak dapat menemukan di mana itu disimpan ... ada ide?
Saat menggunakan file Settings.settings di .NET, di mana sebenarnya konfigurasi disimpan? Saya ingin menghapus pengaturan yang disimpan untuk kembali ke keadaan default, tetapi tidak dapat menemukan di mana itu disimpan ... ada ide?
Jawaban:
Ini tergantung pada apakah pengaturan yang Anda pilih berada pada lingkup "Pengguna" atau lingkup "Aplikasi".
Pengaturan lingkup pengguna disimpan di
C: \ Dokumen dan Pengaturan \ nama pengguna \ Pengaturan Lokal \ Data Aplikasi \ Nama Aplikasi
Anda dapat membaca / menulisnya saat runtime.
Untuk Vista dan Windows 7, foldernya adalah
C: \ Users \ username \ AppData \ Local \ ApplicationName
atau
C: \ Users \ username \ AppData \ Roaming \ ApplicationName
Pengaturan cakupan aplikasi disimpan AppName.exe.config
dan hanya dapat dibaca pada saat runtime.
Berikut adalah potongan yang dapat Anda gunakan untuk secara terprogram mendapatkan lokasi file user.config:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (mis. Settings.settings) menggunakan PerUserRoamingAndLocal untuk pengaturan pengguna secara default (seperti yang saya ingat).
Pembaruan: Aneh tetapi ada terlalu banyak jawaban yang salah di sini. Jika Anda mencari file pengaturan cakupan pengguna Anda (user.config), itu akan ditempatkan di folder berikut (untuk Windows XP):
C: \ Documents and Settings \ (nama pengguna) \ Pengaturan Lokal \ Data Aplikasi \ (nama-perusahaan-jika-ada) \ (nama-aplikasi) .exe_ (Url | Nama Kuat) _ (hash) \ (versi-aplikasi) \
Url atau StrongName tergantung pada apakah Anda memiliki nama kuat rakitan aplikasi atau tidak.
Dengan asumsi bahwa Anda berbicara tentang desktop dan bukan aplikasi web:
Saat Anda menambahkan pengaturan ke proyek, VS membuat file bernama app.config
dalam direktori proyek Anda dan menyimpan pengaturan di file itu. Itu juga membangun Settings.cs
file yang menyediakan aksesor statis ke pengaturan individu.
Pada waktu kompilasi, VS akan (secara default; Anda dapat mengubah ini) menyalin app.config
ke direktori build, mengubah namanya agar sesuai dengan yang dapat dieksekusi (misalnya jika file yang dapat dieksekusi dinamai foo.exe
, file akan dinamai foo.exe.config
), yaitu nama the. Manajer konfigurasi NET mencari ketika mengambil pengaturan saat runtime.
Jika Anda mengubah pengaturan melalui editor pengaturan VS, itu akan memperbarui app.config
dan Settings.cs
. (Jika Anda melihat pengakses properti dalam kode yang dihasilkan di Settings.cs
, Anda akan melihat bahwa mereka ditandai dengan atribut yang berisi nilai default dari pengaturan yang ada di app.config
file Anda .) Jika Anda mengubah pengaturan dengan mengedit app.config
file secara langsung, Settings.cs
tidak akan diperbarui, tetapi nilai baru akan tetap digunakan oleh program Anda saat Anda menjalankannya, karena app.config
akan disalin ke foo.exe.config
pada waktu kompilasi. Jika Anda menonaktifkannya (dengan menyetel properti file), Anda dapat mengubah setelan dengan langsung mengedit foo.exe.config
file di direktori build.
Lalu ada pengaturan cakupan pengguna.
Pengaturan lingkup aplikasi hanya-baca. Program Anda dapat mengubah dan menyimpan pengaturan lingkup pengguna, sehingga memungkinkan setiap pengguna memiliki pengaturannya sendiri. Pengaturan ini tidak disimpan dalam foo.exe.config
file (karena di bawah Vista, setidaknya, program tidak dapat menulis ke subdirektori mana pun Program Files
tanpa elevasi); mereka disimpan dalam file konfigurasi di direktori data aplikasi pengguna.
Path ke file itu adalah %appdata%\%publisher_name%\%program_name%\%version%\user.config
, mis C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Perhatikan bahwa jika Anda telah memberi program Anda nama yang kuat, nama kuat tersebut akan ditambahkan ke nama program di jalur ini.
Saat menjelajah untuk mencari tahu tentang hash di nama folder, saya menemukan (melalui jawaban ini ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(edit: Tautan Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
Jalur
user.config
file yang tepat terlihat seperti ini:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
dimana
<Profile Directory>
- adalah direktori profil roaming atau direktori lokal. Pengaturan disimpan secara default diuser.config
file lokal . Untuk menyimpan pengaturan dalamuser.config
file roaming , Anda perlu menandai pengaturan denganSettingsManageabilityAttribute
denganSettingsManageability
set keRoaming
.
<Company Name>
- biasanya string yang ditentukan olehAssemblyCompanyAttribute
(dengan peringatan bahwa string tersebut di-escape dan dipotong seperlunya, dan jika tidak ditentukan pada assembly, kami memiliki prosedur fallback).
<App Name>
- biasanya string yang ditentukan olehAssemblyProductAttribute
(peringatan yang sama seperti untuk nama perusahaan).
<Evidence Type>
dan<Evidence Hash>
- informasi yang diperoleh dari bukti domain aplikasi untuk menyediakan domain aplikasi dan isolasi assembly yang tepat.
<Version>
- biasanya versi yang ditentukan dalamAssemblyVersionAttribute
. Ini diperlukan untuk mengisolasi berbagai versi aplikasi yang diterapkan secara berdampingan.Nama file selalu sederhana '
user.config
'.
Itu ada di folder dengan nama aplikasi Anda di folder Data Aplikasi di folder utama Pengguna (C: \ documents and settings \ user di xp dan c: \ users \ user di Windows Vista).
Ada juga beberapa informasi di sini .
PS: - coba akses dengan% appdata% di kotak run!
Erm, dapatkah Anda tidak hanya menggunakan Settings.Default.Reset () untuk mengembalikan pengaturan default Anda?
Semua pengaturan Anda disimpan di file .config masing-masing.
File .settings hanya menyediakan kelas yang diketik dengan kuat untuk satu set pengaturan yang dimiliki bersama, tetapi pengaturan sebenarnya disimpan di app.config atau file .config di aplikasi Anda.
Jika Anda menambahkan file .settings, app.config akan secara otomatis ditambahkan ke pengaturan rumah jika Anda belum memilikinya.
Jika file setelan Anda ada di aplikasi web, file itu akan ada di file web.config (tepat di bawah proyek Anda. Jika ada di jenis proyek lain, mereka akan ada di file app.config (juga di bawah proyek Anda) .
Edit
Seperti yang ditunjukkan di komentar: pengaturan aplikasi waktu desain Anda ada dalam file app.config untuk aplikasi selain aplikasi web. Saat Anda membangun, file app.config disalin ke direktori output, dan akan diberi nama yourexename .exe.config. Saat runtime, hanya file bernama yourexename.exe.config yang akan dibaca.
Dua file: 1) File app.config atau web.config. Pengaturannya bisa disesuaikan setelah dibangun dengan text editer. 2) File settings.designer.cs. File ini memiliki kode yang dibuat secara otomatis untuk memuat pengaturan dari file konfigurasi, tetapi nilai default juga ada jika file konfigurasi tidak memiliki pengaturan tertentu.
Saya tahu ini sudah dijawab tetapi tidak bisakah Anda hanya menyinkronkan pengaturan di perancang pengaturan untuk kembali ke pengaturan default Anda?