当我的应用程序被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文件的完整路径。
非常感谢任何帮助。
谢谢, 罗斯
答案 0 :(得分:0)
从显示的代码中我假设它将当前路径作为查找文件的位置。当前路径有点不可预测,因为某些操作会影响其值,并且值会在每次调用时保持不变。即当您的应用程序的另一部分,甚至是另一个应用程序,设置当前路径时,下一次使用该值。要设置当前路径,应该使用通用对话框来浏览特定文件。
在你的情况下,我会尝试
Environment.GetFolderPath
和Environment.SpecialFolder
)或
要查找myType
的汇编路径,您可以使用以下代码:
String strPath = System.IO.Path.GetDirectoryName(typeof(myType).Assembly.CodeBase);
在任何一种情况下,您都应该考虑在较新的Windows操作系统中,用户没有对系统驱动器的所有路径的写访问权。