2011-07-06 11 views
5

Günlük olarak çalışan (windows görev zamanlayıcısı tarafından çağrılan) basit bir konsol uygulamasına sahibim ve uygulama her çalıştırıldığında artırılan bir değere bağlıdır. Bu değeri devam ettirmek için Settings.Settings dosyasını kullanmayı tercih ettim. Bu değer aynı zamanda app yerleştirilir olmasıdır seçti nedeniBir Settings.settings değerinin değerini nasıl değiştirebilirim?

Properties.Settings.Default.RunNumber++; 
Properties.Settings.Default.Save(); 

Part:

yüzden uygulama çalışması tamamlandığında her zaman artırılır Kapsam Kullanıcı ile RunNumber denilen bir tamsayı değerine sahiptir. yapılandırma dosyası:

:

<setting name="RunNumber" serializeAs="String"> 
    <value>0</value> 
</setting> 

o RunNumber beklenmedik artış olacak olmalıydı sadece app.config değiştirilebilir demek oluyor ki

Uygulamam, bir dahaki sefere, uygulamaumun RunNumber değerini okuyacağı zaman, app.config dosyasında (bu durumda 10) ayarlanan değeri alacaktır. Bu gerçekleşmez ve bunun yerine, uygulama çalıştırıldığında, son değiştirilen değeri kullanacaktır, bu durumda, çalıştırma sayısı, beklediğim 10 yerine 1 olacaktır.

Properties.Settings.Default.RunNumber 

nasıl uygulamayı değiştirmek zorunda kalmadan RunNumber değerini değiştirebilirsiniz:

başvurum böyle RunNumber değerini erişir? Bu, beklenmedik bir değere dönüştürülmesi gerektiğinde, bir kod değiştirmek ve uygulamayı yeniden dağıtmak yerine app.config dosyasındaki değeri değiştirebilirdim. Bir yeni kullanıcı başvurunuzu kullanır ve onun ayarları oluşturulacak gerektiğinde app.config yerleştirilir

cevap

6

değeri kullanılır varsayılan olduğunu. Uygulamayı çalıştırdıktan sonra kullanıcı kapsamı ayarlarını kaydetmek için user.config oluşturulacaktır.

Değeri manuel olarak değiştirebilmeniz için, kullanıcı profili dizininde bir yeri bulacağınız ilgili user.config numaralı belgede yapmanız gerekir, çünkü app.config'u değiştirirseniz, yalnızca yeni kullanıcılar değişikliği görür. gezici profili olmadan ve ben user.config için aşağıdaki klasörü alıyorum Example.Settings.CustomClass adlı bir, Windows Forms Uygulama ile

Windows 7'de

:

C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0 
+0

Mükemmel. Açık cevap için teşekkürler. – Aesir

2

Kapsam Kullanıcı ile RunNumber denilen bir tamsayı değeri

Kullanıcı kapsamı, gerçek değerlerin App.config dosyasına değil, Users\<user>\AppData\... klasörünün altına kaydedilmediği anlamına gelir.

Konsol uygulamanız bir Yönetici hesabı altında çalışıyorsa (veya Program Dosyaları'na yerleştirilmemişse), Uygulama kapsamı ayarı kullanabilirsiniz.

0

Settings sınıfına erişmeden önce Reload() ürününü kullanın. Belirli bir özelliğe her erişildiğinde, Reload numaralı telefonu aramak için oluşturulan Settings sınıfını değiştirebilirsiniz.

1

Kullanıcı kapsamı ayarlarının değerleri app.config dosyasında değil, bir kullanıcı dosyasında depolandığından, belki de en iyi yaklaşım, istediğiniz değeri sıfırlamak için uygulamanızı belirli bir anahtarla arama yeteneğini eklemek olabilir. Örneğin. myapp.exe /setcount=123. Tabii

, size doğru dosyasında değerini emin olmak için uygun bir kullanıcı olarak uygulamayı çalıştırmak gerekir.

+0

Bunu windows görev zamanlayıcısı ile yapabileceğinizi sanmıyorum. –

+0

Sadece doğru bir şekilde anladım eğer, görev zamanlayıcı tarafından çağrılan sadece düzenli bir konsol uygulaması. Bu durumda, uygulamayı manuel olarak çağırabilirsiniz. OP, bunun zaman zaman dosyayı düzenlemek için manuel bir süreç olduğunu öne sürdü - bu yaklaşım hataların da potansiyelini sınırlayacaktır. – ZombieSheep

İlgili konular