Względne ścieżki w WinForm

Względne ścieżki w WinForm

W pierwszej kolejności radzę nie używać ścieżek względnych.

Użyj Path.Combine, aby zamienić ścieżki względne w ścieżki bezwzględne. Na przykład możesz użyć tego, aby uzyskać pełną ścieżkę do swojego startowego pliku EXE:

string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;

Gdy już to zrobisz, możesz pobrać jego katalog:

string exeDir = Path.GetDirectoryName(exeFile);

i zamień swoją ścieżkę względną na ścieżkę bezwzględną:

string fullPath = Path.Combine(exeDir, "..\\..\\Images\\Texture.dds");

Będzie to znacznie bardziej niezawodne niż próba użycia ścieżek względnych.


Jeśli spodziewasz się, że zasób będzie znajdować się w tym samym katalogu co plik wykonywalny lub w podkatalogu tego katalogu, najlepiej zawsze używać

string fullPath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), subPath);

lub jeśli obawiasz się, że katalog roboczy może być nieprawidłowy, możesz to zrobić:

string fullPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), subPath);