Переменная среды PATH и относительные пути к файлам - PullRequest
1 голос
/ 21 сентября 2011

Пролог - Если я добавлю переменную среды PATH в Windows с помощью пути к каталогу установки моего приложения, мне не понадобится компакт-диск к каталогу установки, чтобы выполнить его.

Вопрос - Относительный путь файла (ов)в моем приложении интерпретируется в соответствии с текущим путем выполнения в консоли или в соответствии с установочной директорией.Странно, но в моем приложении пути интерпретируются относительно текущего пути выполнения, что вызывает исключения (файл не найден и т. Д.).

Пожалуйста, помогите мне.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Относительные пути будут интерпретироваться относительно Environment.CurrentDirectory.

По умолчанию используется каталог, в котором запущен процесс, но его можно изменить.

1 голос
/ 21 сентября 2011

Поведение, с которым вы сталкиваетесь (относительные пути оцениваются в контексте текущего рабочего каталога), является заданным.

Если вы хотите всегда размещать файл рядом с текущей выполняющейся сборкой, этот фрагмент кода может пригодиться:

public static string GetPathRelativeToExecutingAssemblyLocation(string aRelativePath)
{
    return Path.Combine(
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), 
        aRelativePath);
}
...