2012-04-12 26 views
6

Bu, yalnızca bazı kullanıcılar için geçerli olan bir sorundur. Uygulamamın Marketplace'te yeni bir sürümünü her yayınladığımda, kullanıcıların uygulamadaki tüm ayarlarının kaybolduğunu söyleyen e-postalar alıyorum.Uygulama güncelleştirmesi yüklendiğinde uygulama tüm ayarları kaybediyor

Bunu kendim yapamıyorum ve IsolatedStorage'ı silebilecek kodum yok.

Dışarıda, buna neden olabilecekler hakkında bir ipucu varsa harika olur.

+0

Sorununuzla da ilgileniyorum. Uygulamamı test ederken benzer bir şey fark ettim. Visual Studio'dan çalıştırırken ve telefonu (emülatöre değil) hedeflerken, bazen veritabanını silip yeniden oluşturur, diğer zamanlarda veritabanını silmeden kodu günceller. – Dante

cevap

3

Güncelleme: Aşağıdakilerin WP7 uygulamaları için geçerli olup olmadığından emin değilim - her ihtimale karşı burada bırakacağım. Bunu normal uygulamalar için denedim.

Eski ayarlar dosyasını "yükseltmeniz" gerekecektir.

Ayrıca, bunu yapmanız gerektiğinde (yani, yalnızca yeni bir sürüm yüklendiğinde) bilmeniz gerekir.

Ayarları yeni sürüme geçirmeniz gerektiğini öğrenmek için, ayarlarınıza (demek) NeedSettingsUpgrade adlı bir boolean ekleyin ve bunları true olarak ayarlayın.

Sonra Main() başlangıcında yakın bir yerde aşağıdaki işlevi çağırır:

/// <summary>Upgrades the application settings, if required.</summary> 
private static void upgradeApplicationSettingsIfNecessary() 
{ 
    // Application settings are stored in a subfolder named after the full #.#.#.# version number of the program. This means that when a new version of the program is installed, the old settings will not be available. 
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings from the old to the new folder. 
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which is defaulted to true. Therefore, the first time a new version of this program is run, it will have its default value of true. 
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new. 
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time. 

    if (Settings.Default.NeedSettingsUpgrade) 
    { 
     Settings.Default.Upgrade(); 
     Settings.Default.NeedSettingsUpgrade = false; 
    } 
} 

Not: Elbette aksi ayarları kalıcı olmayacak değiştirmek, programınız çıkmadan önce Settings.Default.Save() aramanız gerekmektedir.

+0

Yani bu kod WP7 uygulamaları için değil mi? – John

2

Buna yaklaşımım, derleme sürüm numarasını yükseltme için tetikleyici olarak kullanmak olmuştur. İlk çalıştırmada, ayarları v1.0 ve derleme versiyon numarası 1.0.0.0 için gereken biçimde kaydedin. Yükseltme gerçekleştiğinde, kaydedilen ayar numarasını (1.0.0.0), yükseltilmiş derleme numarası 1.1.0.0 ile karşılaştırır ve yükseltme gerektiğine karar verir.

Görsel stüdyo için bir redeploy yapmanın bir yükseltme yapmak için guarentee yapmadığını fark ettim, bazen bir kaldırma işlemi yaptım, bu da iyi değildi. Bu yüzden, "yükseltme" yolumu güvenilir bir şekilde yükseltmeler yapıyormuş gibi görünecek şekilde test etmek için Windows Phone Powertools'u değiştirdim.

+0

Teşekkürler, bir göz atacağım. Ama hala sorunum var, buna neyin sebep olduğuna dair bir fikrin var mı? – John