Получение абсолютного пути к исполняемому файлу, используя C#?
взгляните на этот псевдокод:
string exe_path = system.get_exe_path()
print "This executable is located in " + exe_path
если я создам вышеуказанную программу и помещу исполняемый файл в C:/meow/
, это бы распечатать This executable is located in C:/meow/
каждый раз, когда он запускается, независимо от текущего рабочего каталога.
как я мог бы легко сделать это с помощью C#
?
7 ответов:
у MSDN есть статья что говорит использовать
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
; Если вам нужен каталог, используйтеSystem.IO.Path.GetDirectoryName
на этот результат.или, там короче
Application.ExecutablePath
который "получает путь к исполняемому файлу, который запустил приложение, включая имя исполняемого файла", так что это может означать, что он немного менее надежен в зависимости от того, как было запущено приложение.
using System.Reflection; string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
" возвращает путь или UNC-расположение загруженного файла, содержащего манифест."
см.: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx
Application.ResourceAssembly.Location
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Я прыгнул за самым рейтинговым ответом и обнаружил, что не получаю то, что ожидал. Я должен был прочитать комментарии, чтобы найти то, что я искал.
по этой причине я публикую ответ, указанный в комментариях, чтобы дать ему экспозицию, которую он заслуживает.