2011-05-12 93 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