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?

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

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 .


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.