Получение абсолютного пути к исполняемому файлу, используя 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 62

7 ответов:

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

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

AppDomain.CurrentDomain.BaseDirectory
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);

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

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

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

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

на моей стороне, я использовал, с приложением форма:

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

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