簡體   English   中英

如何在 visual studio 中獲取文件的相對路徑?

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

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