【发布时间】:2011-12-09 09:14:40
【问题描述】:
如果我想获得可执行位置 这个命令有什么不同:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.GetCurrentDirectory();
System.Environment.CurrentDirectory;
有什么不同吗? 它指向不同的位置吗?
【问题讨论】:
如果我想获得可执行位置 这个命令有什么不同:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.GetCurrentDirectory();
System.Environment.CurrentDirectory;
有什么不同吗? 它指向不同的位置吗?
【问题讨论】:
Assembly.GetExecutingAssembly().Location
获取正在执行的程序集的位置。在 ASP.NET 应用程序中,由于系统文件夹中的卷影复制程序集,这可能会有所不同。当前执行程序集的位置可能与宿主进程的位置不同。
Directory.GetCurrentDirectory();
获取宿主进程的当前工作目录。在大多数情况下,这将是可执行文件所在的目录,但可以使用SetCurrentDirectory 方法以编程方式修改此工作目录。
System.Environment.CurrentDirectory;
启动托管进程的目录。
在桌面应用程序中,您将所有内容都放在同一个文件夹中,3 可能会返回相同的结果。
【讨论】:
would 而不是will always。不过,我应该使用不同的词:might。
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 返回指定程序集的文件夹。
Directory.GetCurrentDirectory() 获取 系统当前目录没有反斜杠,根据 MSDN。 Directory.GetCurrentDirectory()
System.Environment.CurrentDirectory获取或设置系统当前目录。
【讨论】:
当前目录是工作目录,它不一定与包含你的程序集的目录相同。
例如,如果您在命令行上,在根 C:\ 驱动器中执行命令“SomeFolder\MyProgram.exe”,则当前目录仍然是 C:\
【讨论】: