[英]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.