[英]How to get relative path of a file in visual studio?
我試圖獲取我在 Visual Studio 的解決方案資源管理器中添加的圖像文件的路徑,但我無法獲取該圖像的相對路徑。 H是我項目的文件結構:
/BulutDepoProject /FolderIcon Folder.ico Main.cs
我可以得到這樣的圖像:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
但是我應該能夠通過以下方式獲得它:
"~\\FolderIcon\\Folder.ico"
我想我不知道它的確切語法,所以我無法獲取圖像。 :(
當您想使用任何類型的外部文件時,當然有一種方法可以將它們放在項目中的文件夾中,但不如從資源中獲取它們有效。 在常規的 Visual Studio 項目中,您應該在Properties
部分下有一個Resources.resx
文件,如果沒有,您可以輕松添加自己的Resource.resx
文件。 並在其中添加任何類型的文件,您可以在此處訪問將資源文件添加到項目的演練。
在您的項目中有資源文件后,調用它們很容易,如下所示:
var myIcon = Resources.MyIconFile;
當然,您應該像這樣添加using Properties
語句:
using <namespace>.Properties;
我來晚了,我不確定這是否是您要查找的內容,但我想我會添加它,以防其他人發現它有用。
假設這是您的文件結構:
/BulutDepoProject
/bin
Main.exe
/FolderIcon
Folder.ico
Main.cs
您需要編寫相對於Main.exe
文件的路徑。 所以,你想訪問Folder.ico
,在你的Main.cs
你可以使用:
String path = "..\\FolderIcon\\Folder.ico"
這似乎對我有用!
省略“~\\”:
var path = @"FolderIcon\Folder.ico";
~\\
在文件系統方面沒有任何意義。 我見過的唯一正確使用的地方是在 Web 應用程序中,其中 ASP.NET 將波浪號替換為應用程序根目錄的絕對路徑。
您通常可以假設路徑是相對於 EXE 所在文件夾的。 此外,請確保在 Visual Studio 的屬性選項卡中將圖像指定為“內容”和“如果更新則復制”/“始終復制”。
我也遇到了同樣的問題,我能夠解決它。 那么讓我解釋一下我應用的步驟。 我會根據你的情況來解釋。
根據我的方法,我們需要使用 'Path' 類和 'Assembly' 類來獲取相對路徑。
所以首先在 using 語句中導入 System.IO 和 System.Reflection。
然后鍵入下面給定的代碼行。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
實際上上面給定的行存儲了您項目的輸出目錄的路徑。(這里的“輸出”目錄是指您的項目的Debug文件夾)。
現在將您的 FolderIcon 目錄復制到 Debug 文件夾中。 然后鍵入下面給定的行。
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
現在這個 'iconPath' 變量包含你的 Folder.ico 的整個路徑。 您所要做的就是將其存儲在字符串變量中。 使用下面的代碼行。
string icon_path = new Uri(iconPath ).LocalPath;
現在您可以使用這個 icon_path 字符串變量作為圖標的相對路徑。
謝謝。
在 Visual Studio 中,請單擊“解決方案資源管理器”窗格中的“Folder.ico”文件。 然后您將看到“屬性”窗格。 將“復制到輸出目錄”行為更改為“如果更新則復制”。 這將使 Visual Studio 將文件復制到輸出 bin 目錄。
現在要使用相對路徑獲取文件路徑,只需鍵入:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
希望有所幫助。
我認為使用這將是最簡單的
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
或者這段代碼可以在任何機器上運行,如果你的文件夾在你的根項目中,如果你想改變它......只需更改此部分@“..\\”
public static string bingPathToAppDir(string localPath)
{
string currentDir = Environment.CurrentDirectory;
DirectoryInfo directory = new DirectoryInfo(
Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath)));
return directory.ToString();
}
我的文件夾位於項目的根目錄,我使用了這個:
string sCurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
string sFile = System.IO.Path.Combine(sCurrentDirectory, @"libs\cat");
string sFilePath = Path.GetFullPath(sFile);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.