App.config: Cakupan Pengguna vs Aplikasi

91

Saya telah menambahkan file App.config dalam proyek saya. Saya telah membuat dua pengaturan dari Project> Properties> panel Settings -

masukkan deskripsi gambar di sini

Saya perhatikan bahwa ketika saya menambahkan pengaturan, saya dapat mendefinisikan ruang lingkup sebagai Useratau Application. -

  1. Pengguna
  2. Aplikasi

Jika saya mendefinisikan pengaturan saat Userpergi ke userSettingsbagian,
jika saya mendefinisikan pengaturan saat Applicationpergi ke applicationSettingsbagian

App.config

<configuration>

    <userSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting1" serializeAs="String">
                <value>Value1</value>
            </setting>
        </DemoApp.Properties.Settings>
    </userSettings>

    <applicationSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting2" serializeAs="String">
                <value>Value2</value>
            </setting>
        </DemoApp.Properties.Settings>
    </applicationSettings>

</configuration>

Namun, pengaturan ini dapat diakses dengan cara yang sama dari .cs-

Kode

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;

Apa perbedaan antara Userdan Applicationruang lingkup dan dalam keadaan apa seseorang harus memilih di antara keduanya?

Parag Meshram
sumber

Jawaban:

72

Pada dasarnya, pengaturan aplikasi tidak dapat diubah selama menjalankan program dan pengaturan pengguna dapat. Pengaturan pengguna ini kemudian harus disimpan sehingga pengguna disajikan dengan pengalaman yang familiar ketika dia menjalankan aplikasi berikutnya.

Edit: Sebagai contoh, Anda mungkin menulis aplikasi Anda dengan modul yang berbeda, dan perlu memastikan bahwa modul utama Anda menggunakan versi yang benar dari modul keamanan Anda. Untuk ini, Anda akan menyiapkan pengaturan cakupan aplikasi misalnya:

SecurityModuleVersion  string     Application      v1.21

Beberapa waktu kemudian saat Anda memfaktor ulang modul keamanan, Anda mungkin mengubah nilainya menjadi v1.22 saat Anda menerapkan untuk memastikan keamanan yang benar sedang diterapkan

Di sisi lain, jika aplikasi Anda memiliki 'kulit' yang berbeda dengan perubahan warna, perubahan font, dll, maka Anda dapat mengatur pengaturan pengguna seperti berikut:

ApplicationSkin        string     User              DefaultSkin

Kemudian, ketika Michelle perubahan pada kulit dia lebih suka, aplikasi mengingat nya pengaturan. Properti sekarang mungkin terlihat seperti:

ApplicationSkin        string     User              HelloKittySkin
mcalex.dll
sumber
bisakah u tlg menjelaskan menggunakan contoh?
Parag Meshram
1
Setting default ada di file config, ya? Tetapi di mana pengaturan pengguna yang disimpan disimpan?
Kyle Delaney
8
Pengaturan aplikasi disimpan ke file * .exe.config. Pengaturan pengguna disimpan ke c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (di mana nanti ditarik dari file assembly). Saat dimuat, setelan pengguna lebih diutamakan daripada setelan aplikasi.
Schrodo_Baggins
71

Pengaturan lingkup aplikasi hanya baca, dan hanya dapat diubah pada waktu desain atau dengan mengubah file .exe.config di antara sesi aplikasi. Pengaturan lingkup pengguna, bagaimanapun, dapat ditulis pada waktu proses, sama seperti Anda akan mengubah nilai properti apa pun. Nilai baru tetap ada selama sesi aplikasi. Anda dapat mempertahankan perubahan pada pengaturan pengguna di antara sesi aplikasi dengan memanggil metode Settings.Save.

Sumber di msdn: Menggunakan Pengaturan di C #

Pengaturan pengguna umumnya digunakan untuk mempertahankan preferensi pengguna (misalnya, preferensi pemberitahuan aplikasi, dll.). Pengaturan aplikasi umumnya untuk item seperti kunci API dll.

Seperti dicatat oleh @kmote, ketika pengaturan pengguna diubah dan dipertahankan pada waktu berjalan (melalui settings.Save()), mereka akan ditulis ke folder dalam penyimpanan Profil Pengguna (biasanya C: \ Users \ Username \ AppData \ Local \ AppName di Windows 7 dan di atasnya ). Untuk menentukan lokasi file secara terprogram, silakan lihat posting ini .

CalC
sumber
contoh langsung apa pun akan sangat dihargai
Parag Meshram
1
Juga harus diperhatikan bahwa pengaturan Pengguna tidak dapat diubah dengan mengedit file .config antar sesi.
kmote
@kmote Tentu saja bisa! Jika sesi ditutup, Anda dapat mengubah konfigurasinya (dan karenanya juga userSetting). Perubahan tetap ada dan tercermin dalam program ketika Anda memulai sesi lagi ... Saya baru saja mengujinya.
Riegardt Steyn
5
@Heliac: Saya seharusnya lebih tepat. Anda benar bahwa pengaturan pengguna dapat diubah antar sesi. NAMUN, setelah Anda mengubahnya secara terprogram (menggunakan Settings.Save()), file konfigurasi baru dibuat dan disembunyikan / dimakamkan di C: \ Users [username] \ AppData \ Local \ Microsoft. Sejak saat itu, setiap kali aplikasi dijalankan pengaturan pengguna akan diambil dari itu berkas secara eksklusif, dan perubahan membuat secara manual di App.config atau Settings.settings akan diabaikan.
kmote
Apakah ada cara untuk menemukan dan melihat konten file konfigurasi pengguna ini?
Kyle Delaney