Получить абсолютный путь к исполняемому файлу, используя C #? - PullRequest
64 голосов
/ 02 ноября 2009

Посмотрите на этот псевдокод:

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 ]

97 голосов
/ 02 ноября 2009

В MSDN есть статья , в которой говорится об использовании System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; если вам нужен каталог, используйте System.IO.Path.GetDirectoryName для этого результата.

Или есть более короткое Application.ExecutablePath, которое «Получает путь к исполняемому файлу, который запустил приложение, включая имя исполняемого файла», что может означать, что оно немного менее надежно в зависимости от того, как приложение запущен.

39 голосов
/ 24 июля 2013
AppDomain.CurrentDomain.BaseDirectory
12 голосов
/ 14 августа 2013
using System.Reflection;

string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
4 голосов
/ 19 сентября 2012

"Получает путь или UNC-расположение загруженного файла, который содержит манифест."

См .: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx

Application.ResourceAssembly.Location
3 голосов
/ 07 апреля 2015
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

Я вскочил на самый рейтинговый ответ и обнаружил, что не получаю то, что ожидал. Я должен был прочитать комментарии, чтобы найти то, что я искал.

По этой причине я публикую ответ, указанный в комментариях, чтобы дать ему представление, которого он заслуживает.

1 голос
/ 08 декабря 2015

Я со своей стороны использовал форму заявки:

String Directory = System.Windows.Forms.Application.StartupPath;

принимает путь запуска приложения.

1 голос
/ 25 июля 2013

Предположим, у меня есть файл .config в консольном приложении, и теперь я получаю как показано ниже.

Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";
...