Следующий метод выполняет поиск файла, начинающегося с пути запуска приложения (папка * .exe). Если файл там не найден, выполняется поиск в родительских папках, пока не будет найден файл или не будет достигнута корневая папка. nullвозвращается, если файл не был найден.
public static FileInfo FindApplicationFile(string fileName)
{
string startPath = Path.Combine(Application.StartupPath, fileName);
FileInfo file = new FileInfo(startPath);
while (!file.Exists) {
if (file.Directory.Parent == null) {
return null;
}
DirectoryInfo parentDir = file.Directory.Parent;
file = new FileInfo(Path.Combine(parentDir.FullName, file.Name));
}
return file;
}
Примечание: Application.StartupPathобычно используется в приложениях WinForms, но работает и в консольных приложениях; однако вам нужно будет указать ссылку на System.Windows.Formsсборку. Вы можете заменить Application.StartupPathна,
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)если хотите.