لم يتم العثور على ملف استثناء تم إلقاؤه لملف XML الذي قد يكون سببه Outlook
-
04-10-2019 - |
سؤال
أحصل على ملف لم يتم العثور على استثناء عندما يتم استدعاء طلبي بواسطة 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 الأحدث ، لا يتمتع المستخدم بالوصول إلى جميع مسارات محرك النظام.