App.config: Kullanıcı ve Uygulama Kapsamı


91

Projeme App.config dosyası ekledim. Proje> Özellikler> Ayarlar panelinden iki ayar oluşturdum -

görüntü açıklamasını buraya girin

Bir ayar eklerken kapsamı Userveya olarak tanımlayabileceğimi fark ettim Application. -

  1. Kullanıcı
  2. Uygulama

Ayarı bölüme Usergiderken tanımlarsam , bölümü bölüme giderken tanımlarsamuserSettings
ApplicationapplicationSettings

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>

Fakat bu ayarlar aynı şekilde erişilebilir .cs-

Kod

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

Kapsam Userve Applicationkapsam arasındaki fark nedir ve hangi koşullar altında bu ikisi arasında seçim yapılmalıdır?

Yanıtlar:


72

Temel olarak, bir programın çalışması sırasında uygulama ayarları değiştirilemez ve kullanıcı ayarları değiştirilebilir. Bu kullanıcı ayarları daha sonra kaydedilmelidir, böylece kullanıcıya uygulamayı daha sonra çalıştırdığında tanıdık bir deneyim sunulur.

Düzenleme: Örnekler için, uygulamanızı farklı modüller ile yazabilirsiniz ve ana modülünüzün güvenlik modülünüzün doğru sürümünü kullandığından emin olmanız gerekir. Bunun için bir uygulama kapsamı ayarı yaparsınız, örneğin:

SecurityModuleVersion  string     Application      v1.21

Güvenlik modülü planı ayrı zaman süre sonra, sen doğru güvenlik uygulanmaktadır sağlamak için dağıtırken v1.22 değerini değişebilir

Öte yandan, uygulamanızın renk değişiklikleri, yazı tipi değişiklikleri vb. İle farklı 'dış görünümleri' varsa, aşağıdaki gibi bir kullanıcı ayarı yapabilirsiniz:

ApplicationSkin        string     User              DefaultSkin

Michelle tercih cilde değiştirir Sonra, uygulama hatırlar onun ayarlarını. Özellikler artık şöyle görünebilir:

ApplicationSkin        string     User              HelloKittySkin

bir örnek kullanarak açıklayabilir misin?
Parag Meshram

1
Varsayılan ayarlar yapılandırma dosyasındadır, evet? Ancak kaydedilen kullanıcı ayarları nerede saklanır?
Kyle Delaney

8
Uygulama ayarları, * .exe.config dosyasına kaydedilir. Kullanıcı ayarları c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config konumuna kaydedilir (burada daha sonra derleme dosyasından çekilir). Yüklendiğinde, kullanıcı ayarları uygulama ayarlarına göre önceliklidir.
Schrodo_Baggins

71

Uygulama kapsamı ayarları salt okunurdur ve yalnızca tasarım zamanında veya uygulama oturumları arasında .exe.config dosyası değiştirilerek değiştirilebilir. Bununla birlikte, kullanıcı kapsamı ayarları, tıpkı herhangi bir özellik değerini değiştirdiğiniz gibi, çalışma zamanında yazılabilir. Yeni değer, uygulama oturumu süresince devam eder. Settings.Save yöntemini çağırarak uygulama oturumları arasında kullanıcı ayarlarında yapılan değişiklikleri sürdürebilirsiniz.

Msdn'de kaynak: C # 'da Ayarları Kullanma

Kullanıcı ayarları genellikle kalıcı kullanıcı tercihleri ​​için kullanılır (örn. Uygulama bildirim tercihleri ​​vb.). Uygulama ayarları genellikle API anahtarları vb. Gibi öğeler içindir.

@Kmote tarafından belirtildiği gibi, kullanıcı ayarları çalışma zamanında (üzerinden settings.Save()) değiştirilip kalıcı hale getirildiğinde, bunlar Kullanıcı Profili deposunda (genellikle Windows 7 ve üzeri C: \ Users \ Kullanıcı Adı \ AppData \ Local \ AppName ) bir klasöre yazılacaktır. ). Dosyanın konumunu programlı olarak belirlemek için lütfen bu gönderiye bakın .


herhangi bir canlı örnek çok takdir edilecektir
Parag Meshram

1
Ayrıca oturumlar arasında .config dosyası düzenlenerek Kullanıcı ayarlarının değiştirilemeyeceği de belirtilmelidir.
2016

@kmote Elbette yapabilirsiniz! Oturum kapatılırsa, yapılandırmayı (ve dolayısıyla userSetting'i) değiştirebilirsiniz. Oturumu yeniden başlattığınızda değişiklik devam eder ve programa yansıtılır ... Şimdi test ettim.
Riegardt Steyn

5
@Heliac: Daha kesin olmalıydım. UserSettings'in oturumlar arasında değiştirilebileceği konusunda haklısınız. ANCAK, bunları program aracılığıyla (kullanarak Settings.Save()) değiştirdiğinizde , yeni bir yapılandırma dosyası oluşturulur ve C: \ Users [kullanıcı adı] \ AppData \ Local \ Microsoft içinde gizlenir / gömülür. Bu noktadan sonra, uygulama her başlatıldığında, kullanıcı ayarları özel olarak o dosyadan çekilecek ve App.config veya Settings.settings'de manuel olarak yapılan herhangi bir değişiklik yok sayılacaktır.
kmote

Bu kullanıcı yapılandırma dosyasının içeriğini bulmanın ve görüntülemenin bir yolu var mı?
Kyle Delaney
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.