Prologue - 如果我在带有我的应用程序的安装目录路径的Windows中附加PATH环境变量,我不需要CD到安装目录来执行它。
问题 - 我的应用程序中的相对文件路径是根据控制台中的当前执行路径还是根据安装目录解释的。奇怪的是,在我的应用程序中,路径正在相对于当前执行路径进行解释,从而导致异常(找不到文件等)。
请帮帮我。
答案 0 :(得分:2)
相对路径将相对于Environment.CurrentDirectory
进行解释。
它将默认为进程开始的目录,但可以更改。
答案 1 :(得分:1)
您遇到的行为(在当前工作目录的上下文中评估的相对路径)是设计使然。
如果您希望始终将文件放在当前正在执行的程序集旁边,这段代码可能会派上用场:
public static string GetPathRelativeToExecutingAssemblyLocation(string aRelativePath)
{
return Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
aRelativePath);
}