簡體   English   中英

獲取文件的相對路徑 C#

[英]Get relative Path of a file C#

我目前在 Visual Studio 中用 c# 編寫一個項目。 項目完整路徑為:

"C:\TFS\MySolution\"

我有一個需要在執行過程中加載的文件。 假設文件路徑是

"C:\TFS\MySolution\Project1\NeedtoLoad.xml"

我不想編寫硬編碼的完整路徑,而是希望以動態方式獲取路徑。

我使用以下行:

    var path = Directory.GetCurrentDirectory();

我發現的每個方法和上面的代碼行都讓我得到以下路徑的問題:

"C:\TFS\MySolution\Project1\bin\Debug"

我需要的是

"C:\TFS\MySolution\Project1\"

所以我可以連接

NeedtoLoad.xml

到答案。

我當然可以這樣做:

path.Substring(0, path.IndexOf("bin\\Debug"));

但它並不那么優雅。

您可以使用Directory.GetParent及其Parent成員

string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;

將在路徑樹上向上兩級並返回"C:\\TFS\\MySolution\\Project1"

如果 xml 是您項目的靜態部分(您不會在運行時覆蓋它),那么最好的辦法可能是將它包含到您的 dll 中。

  • 轉到文件屬性並將其設為嵌入式資源
  • 只需從 dll 資源加載它,例如

    var asm = Assembly.GetCallingAssembly(); using (var stream = asm.GetManifestResourceStream(resource)) { var reader = new StreamReader(stream); return reader.ReadToEnd(); }

如果該文件是項目的一部分,則應確保在構建時將其復制到項目輸出中。

在解決方案資源管理器中選擇文件,然后轉到 Visual Studio (F4) 中的屬性窗格。 選擇“內容”作為“構建操作”。 現在,當您構建解決方案時,該文件將被復制到輸出目錄(bin/Debug 或 bin/Release)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM