C# 使用c语言的相对路径#

C# 使用c语言的相对路径#,c#,path,relative-path,C#,Path,Relative Path,我用的是c#。在我的项目中,我有一个xml文件夹,其中有一个xml文件,比如“file.xml”。。 我想在我的项目中使用该文件。我想从当前项目本身获取该文件,因此我给出的路径如下: xmlDoc.Load(@"..\xml\file.xml"); 但它不接受这个文件。 它显示了一些“C:”路径。。 如何从项目本身检索此文件。您应该在解决方案资源管理器中的文件上设置复制到输出目录属性,以便将文件与EXE一起转到文件夹中 然后你就可以写了 xmlDoc.Load(Path.Combine(t

我用的是c#。在我的项目中,我有一个xml文件夹,其中有一个xml文件,比如“file.xml”。。 我想在我的项目中使用该文件。我想从当前项目本身获取该文件,因此我给出的路径如下:

  xmlDoc.Load(@"..\xml\file.xml");
但它不接受这个文件。 它显示了一些“C:”路径。。
如何从项目本身检索此文件。

您应该在解决方案资源管理器中的文件上设置
复制到输出目录
属性,以便将文件与EXE一起转到文件夹中

然后你就可以写了

xmlDoc.Load(Path.Combine(typeof(MyClass).Assembly, "file.xml"));
xmlDoc.Load(Server.MapPath("~/App_Data/file.xml"));
这将使用EXE文件的实际位置,并且无论当前目录如何,都将起作用

编辑:在ASP.Net中,您应该将文件放在
应用程序数据
文件夹中(该文件夹不可公开访问),然后写入

xmlDoc.Load(Path.Combine(typeof(MyClass).Assembly, "file.xml"));
xmlDoc.Load(Server.MapPath("~/App_Data/file.xml"));

您应该将
Copy to Output Directory
设置为“Copy if newer”,然后可以使用:

Path.Combine(Application.StartupPath, "file.xml");

它不工作..它出现异常“找不到文件”并显示一些“C:programfiles…”路径。它是windows应用程序还是ASP.NET应用程序?请尝试使用“Server.MapPath(“~/file.xml”);”路径需要是相对的。不起作用,因为
Location.ToString()
包括MyClass.exe在我的情况下,这种方法不起作用,因为包含该文件的Visual Studio项目是SQL数据库项目。