Получить каталог, в котором находится исполняемый код - PullRequest
5 голосов
/ 17 июля 2010

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

MyLib.dll
Target1.dll
Target2.dll

Foo(new[] { "..\\..\\Target1.dll", "..\\..\\Target2.dll" });

Итак, я звоню System.IO.Directory.GetFiles(path, "*.dll"). Но теперь мне нужно узнать путь:

string path = new FileInfo((Assembly.GetExecutingAssembly().Location)).Directory.FullName)

а есть ли более короткий путь?

Ответы [ 2 ]

6 голосов
/ 17 июля 2010

Вы можете попробовать свойство Environment.CurrentDirectory. Обратите внимание, что в зависимости от типа приложения (Консоль, WinForms, ASP.NET, Служба Windows, ...) и способа его запуска, это может вести себя по-разному.

2 голосов
/ 04 января 2016

Environment.CurrentDirectory возвращает текущий каталог, а не каталог, в котором находится исполняемый код. Если вы используете Directory.SetCurrentDirectory или запускаете программу с помощью ярлыка, на котором установлен каталог, это не будет каталог, который вы ищете.

Придерживайтесь своего оригинального решения. Скройте реализацию (и сделайте ее короче), используя свойство:

private DirectoryInfo ExecutingFolder
{
    get
    {
        return new DirectoryInfo (
            System.IO.Path.GetDirectoryName (
                System.Reflection.Assembly.GetExecutingAssembly().Location));
    }
}
...