سؤال

تم إصدار تطبيق Winform باستخدام ClickOnce في شبكتنا الداخلية.نقوم بتخزين التفضيلات الشخصية لواجهة المستخدم الرسومية في وحدة التخزين المعزولة.كل شيء يعمل بشكل جيد جدا :)

المشكلة هي عندما يكون لدينا نسخة جديدة من التطبيق نقوم بنشر...فقدت كل التفضيلات!يحتاج المستخدم إلى إعداد تفضيلاته مرارًا وتكرارًا لكل إصدار.

هل هناك طريقة لتجميد العزل للتطبيق بأكمله بدلاً من الإصدار؟

هل كانت مفيدة؟

المحلول

تحتاج إلى استخدام طلب نطاقها، بدلا من اِختِصاص تخزين محدد النطاق ومعزول.يمكن القيام بذلك باستخدام أحد IsolatedStorageFileStream's بناة مثقلة.

مثال:

using System.IO;
using System.IO.IsolatedStorage;
...

IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication();    
using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat", FileMode.OpenOrCreate, appScope))
{
...

ومع ذلك، ستواجه الآن مشكلة أن هذا الرمز يعمل فقط عند تشغيل التطبيق عبر ClickOnce لأن هذه هي المرة الوحيدة التي يتوفر فيها تخزين معزول ضمن نطاق التطبيق.إذا لم تقم بالتشغيل عبر ClickOnce (مثل Visual Studio)، GetUserStoreForApplication() سوف يرمي استثناء.

الطريق حولها هذا المشكلة هي التأكد AppDomain.CurrentDomain.ActivationContext ليست فارغة قبل محاولة استخدام التخزين المعزول لنطاق التطبيق.

نصائح أخرى

وكنت أعمل على ClickOnce app ومنذ فترة، وتستخدم Environment.GetFolderPath (ApplicationData) - على سبيل المثال التجوال مجلد بيانات التطبيقات، لتخزين كافة الإعدادات. عملت بشكل جيد ونجا العديد من التحديثات. مجرد خلق subdireectory مع اسم التطبيق أو COMPANYNAME / APPNAME أو أيا كان وتخزين كل شيء في هناك.

وملخص عن إجابات أخرى:

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
if (System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed)
{
    isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
}

لديك لتخزين نسخة دائمة من إعدادات المستخدم في مخزن أكثر دواما مثل قاعدة البيانات. التطبيق الخاص بك يمكن أن تقرر استخدام التخزين المعزول إذا كان متوفرا. إذا لم يكن متوفرا (بسبب إصدار أحدث)، يجب الحصول على التطبيق الإعدادات من قاعدة البيانات واستخدامها لإعادة تهيئة الإعدادات في التخزين المعزول. إذا تم تغيير الإعدادات، يجب تحديث كلا المكانين. ما لم يكن هناك نسخة أحدث من التطبيق، لا ينبغي أن يكون التطبيق الخاص بك للحصول على الإعدادات من DB.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top