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

Есть у нас каталог, расположенный по пути:

C:\project\packages\PhantomJS.2.1.1

В данном каталоге находится требуемый нам исполняемый файл.
Обратите внимание на цифры в названии каталога. Данные цифры периодически изменяются и в коде программы их жёстко не задашь. Можно этот путь прописать в файле настроек, однако его надо постоянно держать в актуальном состоянии и править.

Как нам поступить в данном случае? Нам надо сделать так, чтобы программа не привязывалась к цифрам в названии каталога. Далее напишем код, который нам позволит постоянно и верно определять путь к исполняемому файлу, даже если цифры (версия) в названии каталога будут меняться ежечасно. При этом мы будем исходить из того, что у нас только один каталог «PhantomJS».

using System.IO;

string dirWork = "C:\project\packages"; //исходный рабочий каталог
string dirPhantom = null; //каталог, в котором находится исполняемый файл
string[] dirsAll = Directory.GetDirectories(dirWork, "PhantomJS*"); // получаем список/массив всех поддиректорий рабочего каталога, которые начинаются на "PhantomJS"
dirPhantom = dirsAll[0]; // так как директория "PhantomJS" одна, поэтому берём первую и единственную ссылку из массива

// dirPhantom == "C:\project\packages\PhantomJS.2.1.1"

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