Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到文件可能由Outlook引起的XML文件引发异常_C#_Xml_Outlook_Filenotfoundexception - Fatal编程技术网

C# 找不到文件可能由Outlook引起的XML文件引发异常

C# 找不到文件可能由Outlook引起的XML文件引发异常,c#,xml,outlook,filenotfoundexception,C#,Xml,Outlook,Filenotfoundexception,Outlook调用我的应用程序时,我遇到“未找到文件”异常。当电子邮件保存到计算机时,将调用该应用程序,并对保存的邮件执行操作 我的应用程序使用XML文件存储可配置设置,但Outlook调用以执行应用程序时找不到此文件。如果我手动运行程序,那么它工作正常 例外情况的有趣之处在于: System.IO.FileNotFoundException:找不到文件“C:\Program Files\Common Files\System\MSMAPI\1033\SettingsOpen.xml” 为什么O

Outlook调用我的应用程序时,我遇到“未找到文件”异常。当电子邮件保存到计算机时,将调用该应用程序,并对保存的邮件执行操作

我的应用程序使用XML文件存储可配置设置,但Outlook调用以执行应用程序时找不到此文件。如果我手动运行程序,那么它工作正常

例外情况的有趣之处在于:

System.IO.FileNotFoundException:找不到文件“C:\Program Files\Common Files\System\MSMAPI\1033\SettingsOpen.xml”

为什么Outlook认为文件在这里?这不是文件的路径,但我确信它与Outlook相关。我在代码中引用路径的方式是:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("settingsOpened.xml");
文件与.exe位于同一文件夹中。我也不想硬编码XML文件的完整路径

任何帮助都将不胜感激

谢谢,
Ross

根据显示的代码,我假设它以当前路径作为查找文件的位置。当前路径有点不可预测,因为某些操作会影响其值,并且该值会在每次调用时保持不变。即,当应用程序的另一部分或甚至另一个应用程序设置当前路径时,下次使用此值。要设置当前路径,可以使用公共对话框浏览特定文件

就你的情况而言,我会尽量

  • 通过从一个已知文件夹(例如,用户的应用程序路径-查找
    Environment.GetFolderPath
    Environment.SpecialFolder
    )派生来明确指定路径

  • 解析相对于Dll程序集路径的路径
要查找
myType
的程序集路径,可以使用以下代码:

String strPath = System.IO.Path.GetDirectoryName(typeof(myType).Assembly.CodeBase);
无论在哪种情况下,您都应该考虑到,在较新的Windows操作系统中,用户对系统驱动器的所有路径都没有写入访问权限。