2011-05-12 89 views
5

我正在使用c#。在我的项目中我有一个xml文件夹,其中我有一个xml文件说“file.xml”.. 我想在我的项目中使用该文件。我想从当前项目本身取得该文件,因为我将路径设为:使用c的相对路径#

xmlDoc.Load(@"..\xml\file.xml"); 

但它没有取出文件。 它显示了一些“C:”路径。 如何从项目本身检索此文件。

回答

6

您应该在解决方案资源管理器中的文件上设置Copy to Output Directory属性,以使用EXE将文件映射到该文件夹​​。

然后,您可以编写

xmlDoc.Load(Path.Combine(typeof(MyClass).Assembly, "file.xml")); 

它使用EXE文件的实际位置也不管当前目录下的正常工作。

编辑:在ASP.Net,你应该把你的文件中App_Data文件夹(这是不能公开访问),然后写

xmlDoc.Load(Server.MapPath("~/App_Data/file.xml")); 
+0

在我的情况下,这种方法是行不通的,因为Visual Studio项目包含文件是一个SQL数据库项目。 – 2018-02-28 08:00:50

2

您应该设置Copy to Output Directory为“复制,如果新”然后你可以使用:

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

它不工作..它给予异常“找不到文件”,并显示一些“C:程序文件.....”路径。 – mucchar 2011-05-12 12:02:58

+0

它是一个Windows应用程序或ASP.NET应用程序? – jaywayco 2011-05-12 12:23:26

+0

它是asp应用 – mucchar 2011-05-12 12:43:09

0
Path.Combine(typeof(MyClass).Assembly.Location.ToString(), "file.xml") 
+1

不起作用,因为'Location.ToString()'包含MyClass.exe – 2014-01-26 14:04:32