1

当 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 文件的完整路径。

任何帮助将不胜感激。

谢谢,罗斯

4

1 回答 1

0

从显示的代码中,我假设它将当前路径作为查找文件的位置。当前路径有点不可预测,因为某些操作会影响其值,并且该值在每次调用时都会保持不变。即,当您的应用程序的另一部分,甚至另一个应用程序设置当前路径时,此值将在下次使用。要设置当前路径,使用通用对话框浏览某个文件就足够了。

在你的情况下,我会尝试

  • 通过从众所周知的文件夹之一派生来明确指定路径(例如用户的应用程序路径 - 查找Environment.GetFolderPathEnvironment.SpecialFolder

或者

  • 解析相对于您的 Dll 程序集路径的路径。

要查找您的程序集路径,myType可以使用以下代码:

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

在任何一种情况下,您都应该考虑到在较新的 Windows 操作系统中,用户没有对系统驱动器的所有路径的写访问权。

于 2010-09-21T11:06:50.610 回答