Как мне получить путь к текущей сборке? Мне нужно получить данные из некоторых путей относительно местоположения hte current assembly (.dll).
Я думал, что кто-то сказал мне использовать пространство имен отражений, но я ничего не могу найти там.
Как мне получить путь к текущей сборке? Мне нужно получить данные из некоторых путей относительно местоположения hte current assembly (.dll).
Я думал, что кто-то сказал мне использовать пространство имен отражений, но я ничего не могу найти там.
Вы можете использовать:
string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
Некоторые предложения в комментариях должны пройти через System.Uri.UnescapeDataString
(от vvnurmi), чтобы обеспечить обработку любого процента, и использовать Path.GetFullpath
(от TrueWill), чтобы убедиться, что путь находится в стандартной форме Windows (вместо того, чтобы иметь косые черты вместо обратных косых черт). Вот пример того, что вы получаете на каждом этапе:
string s = Assembly.GetExecutingAssembly().CodeBase;
Console.WriteLine("CodeBase: [" + s + "]");
s = (new Uri(s)).AbsolutePath;
Console.WriteLine("AbsolutePath: [" + s + "]");
s = Uri.UnescapeDataString(s);
Console.WriteLine("Unescaped: [" + s + "]");
s = Path.GetFullPath(s);
Console.WriteLine("FullPath: [" + s + "]");
Вывод, если мы выполняем C:\Temp\Temp App\bin\Debug\TempApp.EXE
:
CodeBase: [file:///C:/Temp/Temp App/bin/Debug/TempApp.EXE] AbsolutePath: [C:/Temp/Temp%20App/bin/Debug/TempApp.EXE] Unescaped: [C:/Temp/Temp App/bin/Debug/TempApp.EXE] FullPath: [C:\Temp\Temp App\bin\Debug\TempApp.EXE]
System.Reflection.
Assembly
. GetExecutingAssembly()
Location
Просто, чтобы было ясно:
Assembly.GetExecutingAssembly().Location
Я предпочитаю
new System.Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath;
EscapedCodeBase охватывает сценарий, в котором ваш локальный путь может иметь недопустимый URI char в нем (см. fooobar.com/info/22727/...)
LocalPath включает полный путь как для локальных путей, так и для непустых путей, где AbsolutePath отключает "\\ server"