【问题标题】:different between executable location可执行位置之间的不同
【发布时间】:2011-12-09 09:14:40
【问题描述】:

如果我想获得可执行位置 这个命令有什么不同:

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

Directory.GetCurrentDirectory();

System.Environment.CurrentDirectory;

有什么不同吗? 它指向不同的位置吗?

【问题讨论】:

    标签: c# directory location


    【解决方案1】:

    Assembly.GetExecutingAssembly().Location

    获取正在执行的程序集的位置。在 ASP.NET 应用程序中,由于系统文件夹中的卷影复制程序集,这可能会有所不同。当前执行程序集的位置可能与宿主进程的位置不同。

    Directory.GetCurrentDirectory();

    获取宿主进程的当前工作目录。在大多数情况下,这将是可执行文件所在的目录,但可以使用SetCurrentDirectory 方法以编程方式修改此工作目录。

    System.Environment.CurrentDirectory;

    启动托管进程的目录。


    在桌面应用程序中,您将所有内容都放在同一个文件夹中,3 可能会返回相同的结果。

    【讨论】:

    • “可能会返回相同的结果”是错误的,你永远不能依赖它。工作目录(“当前目录”)可以在快捷方式属性中设置,也可以从命令行的不同目录运行程序。
    • @matejcik,这就是为什么我说would 而不是will always。不过,我应该使用不同的词:might
    【解决方案2】:
    1. Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 返回指定程序集的文件夹。

    2. Directory.GetCurrentDirectory() 获取 系统当前目录没有反斜杠,根据 MSDN。 Directory.GetCurrentDirectory()

    3. System.Environment.CurrentDirectory获取设置系统当前目录。

    【讨论】:

      【解决方案3】:

      当前目录是工作目录,它不一定与包含你的程序集的目录相同。

      例如,如果您在命令行上,在根 C:\ 驱动器中执行命令“SomeFolder\MyProgram.exe”,则当前目录仍然是 C:\

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 2011-06-01
        • 1970-01-01
        • 2020-10-19
        • 2011-04-06
        • 1970-01-01
        相关资源
        最近更新 更多