Assembly.GetEntryAssembly().Location
или Assembly.GetExecutingAssembly().Location
Используйте в сочетании с System.IO.Path.GetDirectoryName()
, чтобы получить только каталог.
Пути от GetEntryAssembly()
и GetExecutingAssembly()
могут отличаться, хотя в большинстве случаев каталог будет одинаковым.
С GetEntryAssembly()
вы должны знать, что это может вернуть null
, если модуль ввода неуправляемый (т.е. исполняемый файл C ++ или VB6). В этих случаях можно использовать GetModuleFileName
из Win32 API:
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetModuleFileName(HandleRef hModule, StringBuilder buffer, int length);