لم يتم العثور على ملف استثناء تم إلقاؤه لملف XML الذي قد يكون سببه Outlook

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

سؤال

أحصل على ملف لم يتم العثور على استثناء عندما يتم استدعاء طلبي بواسطة Outlook. يسمى عند حفظ بريد إلكتروني إلى الكمبيوتر ، ويتم استدعاء التطبيق ويقوم بإجراء على الرسالة المحفوظة.

يستخدم تطبيقي ملف XML لتخزين الإعدادات القابلة للتكوين ولكن لا يمكن العثور على هذا الملف عند استدعاء Outlook لتنفيذ التطبيق. إذا قمت بتشغيل البرنامج يدويًا ، فهو يعمل بشكل جيد.

الشيء المثير للاهتمام حول الاستثناء هو:

System.io.filenotfoundException: لا يمكن العثور على ملف "C: Program Files Common Files System Msmapi 1033 SettingSopened.xml '.

لماذا يعتقد Outlook أن الملف هنا؟ هذا ليس هو المسار للملف ولكني متأكد من أنه مرتبط بـ Outlook. الطريقة التي أشير بها إلى المسار في الكود فقط:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("settingsOpened.xml");

مع وجود الملف في نفس المجلد مثل .exe. لا أرغب في ترميز المسار الكامل في ملفات XML أيضًا.

أي مساعدة سيكون موضع تقدير كبير.

شكرا روس

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

المحلول

من الكود الموضح ، سأفترض أن الأمر يتطلب المسار الحالي كموقع للبحث عن الملف. المسار الحالي لا يمكن التنبؤ به بعض الشيء لأن بعض العمليات تؤثر على قيمتها ويتم استمرار القيمة في كل مكالمة. أي عندما يضع جزء آخر من التطبيق الخاص بك ، أو حتى التثبيت الآخر ، المسار الحالي ، يتم استخدام هذه القيمة في المرة القادمة. لتعيين المسار الحالي ، يكون من يكفي استخدام مربع حوار مشترك لتصفح ملف معين.

في حالتك ، سأحاول إما

  • حدد المسار بشكل صريح من خلال استخلاصه من أحد المجلدات المعروفة (مثل مسار تطبيق المستخدم - ابحث عنه Environment.GetFolderPath و Environment.SpecialFolder)

أو

  • لحل المسار بالنسبة إلى مسار تجميع DLL الخاص بك.

للعثور على مسار التجميع myType يمكنك استخدام الكود التالي:

String strPath = System.IO.Path.GetDirectoryName(typeof(myType).Assembly.CodeBase);

في كلتا الحالتين ، يجب أن تفكر في أنه في أنظمة تشغيل Windows الأحدث ، لا يتمتع المستخدم بالوصول إلى جميع مسارات محرك النظام.

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