لا أستطيع فتح ملف التخزين المعزول الخاص بي عندما أقوم بنقل تطبيقي exe

StackOverflow https://stackoverflow.com//questions/9690664

سؤال

أنا أستخدم تقنية IsolatedStorage في تطبيق C# .net الخاص بي.

يقوم تطبيقي بحفظ البيانات عند الإغلاق في ملف يسمى MyData.dat في وحدة التخزين المعزولة.

عندما أفتح تطبيقي فإنه يعيد تحميل تلك البيانات ويطبعها على الشاشة.

عندما أنقل تطبيقي إلى دليل آخر، على سبيل المثال من D:\MyApp.exe إلى D:\Apps\MyApp.exe، ثم أقوم بتشغيل التطبيق من دليله الجديد، فإنه يفشل في تحميل الملف MyData.dat (FileNotFoundException) بسبب يبحث عن ملف MyData.dat مختلف في مكان مختلف..

هل يعرف أحد كيف يمكنني حفظ ملفي المعزول - ملف MyData.dat في مكان بغض النظر عن المكان الذي أفتح فيه App.exe، فسوف يجده؟

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

المحلول

تحقق من دليل المنسخن إعادة اخترام في كلتا الحالتين.حتى لو كان الجهاز هو نفسه، يمكن أن يكون المتوقع مسار التخزين مختلفا عن نفس التطبيق في مواقع مختلفة.

الحصول على مسار تخزين العزل

نصائح أخرى

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

أو من الممكن أن تقوم المرة الأولى في تشغيل تطبيقك في وضع التصحيح داخل VS ثم قمت بتحريك Exe الخاص بك وتشغيله مباشرة.في هذه الحالة، يجب أن يكون هناك دلائل مختلفة مثل yourapapnamname و yourappname.vschost .

على أي حال، يرجى فحص مواقع التخزين المعزولة للحصول على مزيد من المعلومات.

يمكنك استخدام IsolatedStorageFile.GetUserStoreForAssembly للحصول على متجر يمكنك استخدامه، طالما لم تتغير هوية التجميع.لذلك سيكون أيضًا مستقلاً عن موقع ملف exe.انظر مقالة MSDN

حاولت ذلك بنفسي ولقد لاحظت أن مجمعية مثيل المعزولين يتغيرون عند تحريك التطبيق في مجلد آخر.

لمنع ذلك، يجب عليك توقيع التجميع وبعد ذلك فقط يمكنك نقل التطبيق إلى مجلد آخر وما زالت تستخدم نفس الموقع لملف StorageGe المعزول.

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