Path system.io.directorynotfound->;但它在控制台中工作

Path system.io.directorynotfound->;但它在控制台中工作,path,console,executable,relative-path,filenotfoundexception,Path,Console,Executable,Relative Path,Filenotfoundexception,我的文件是这样引用的(都是相对的): 及 当我双击可执行文件时,我得到system.io.directorynotfound和“这个问题需要关闭”。但是在控制台上运行它就像一种魅力。这里怎么了 我尝试设置Environment.CurrentDirectory,但无法使任何内容正常工作。我为什么要这么做?它违背了相对路径的目的不 回应 “应用程序”在当前上下文中不存在,我将继续尝试人们提到的内容,这不是一个windows.form 测试 GetDirectoryName(Reflection.A

我的文件是这样引用的(都是相对的):

当我双击可执行文件时,我得到system.io.directorynotfound和“这个问题需要关闭”。但是在控制台上运行它就像一种魅力。这里怎么了

我尝试设置Environment.CurrentDirectory,但无法使任何内容正常工作。我为什么要这么做?它违背了相对路径的目的不

回应

“应用程序”在当前上下文中不存在,我将继续尝试人们提到的内容,这不是一个windows.form

测试


GetDirectoryName(Reflection.Assembly.GetExecutionGassembly().GetName().CodeBase),myPageTitleXML);不支持提供错误URI格式,Path.GetFullPath()也不支持。Server.MapPath也会导致错误,当前处于脱机状态

假设此目录位于代码正在执行的目录下,听起来您可以使用

Application.ExecutablePath() 

。。了解应用程序在搜索包含“pagetitles.xml”文件的“xml”目录时看到的内容

如果其中一个方法返回的目录未指向您认为的位置,则需要移动应用程序的位置或此文件夹的位置,使其与应用程序位于同一目录中


希望这能让您走上正确的道路。

因此,当您双击可执行文件运行它时,在名为xml的文件夹中是否有一个名为pagetitles.xml的文件,其中xml是与可执行文件位于同一位置的文件夹

像这样使用相对路径当然是可能的,但我不推荐这样做。相反,可以使用以下方法:

 string fileToOpen = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), myPageTitleXML);  
 using (StreamReader r = new StreamReader(fileToOpen))  
 {   
   //etc.. . .etc....etc..  
 }

这是ASP.NET代码吗?如果是这样,那么您可能需要执行MapPath(“xml/pagetitles.xml”)

Application.ExecutablePath() 
Application.StartUpPath()
 string fileToOpen = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), myPageTitleXML);  
 using (StreamReader r = new StreamReader(fileToOpen))  
 {   
   //etc.. . .etc....etc..  
 }