【问题标题】:Get FileInfo On Itself?自己获取 FileInfo?
【发布时间】:2011-10-30 17:14:58
【问题描述】:

我的 C# 程序是单个 .exe 文件的形式。因此,用户可以将它存储在任何地方并命名它。如果我不知道路径,如何使用 FileInfo 类获取其属性?

【问题讨论】:

    标签: c# .net fileinfo


    【解决方案1】:
    System.Reflection.Assembly.GetExecutingAssembly().Location
    

    【讨论】:

    • 如果放置在 APP 的类库之一中,这将返回 DLL 的路径,MSDN:Gets the assembly that contains the code that is currently executing
    • 他指定他的程序是单个 .exe 文件的形式,因此它将返回该 .exe 文件的 URI 字符串,但我同意 - 您的解决方案更通用,因此更好
    • +1 你是对的,我忽略了这一点。在这种情况下,我会说您的解决方案更好,因为更轻量级+如果我从 VS 调试器运行应用程序,我的解决方案将返回 app.vshost.exe 并且您更正确 -app.exe
    • Niko, @sll :这种尊重的讨论使 SE 成为网络上最好的社区。谢谢你的帮助! :)
    【解决方案2】:
    using System.Diagnostics;
    
    var info = new FileInfo(Process.GetCurrentProcess().MainModule.FileName);
    

    PS:这将为您返回一个可执行文件的路径,即使此代码已在解决方案的项目 (DLL) 中调用,但请注意,如果在 VS 调试器中运行,它会返回 ApplicationExeName.vshost.exe 所以在在这种情况下,您可能会发现 Niko Drašković (System.Reflection.Assembly.GetExecutingAssembly().Location)

    的更有用的解决方案

    【讨论】:

      【解决方案3】:

      您可以使用

      获取工作目录
      Environment.CurrentDirectory
      

      更多信息请访问MSDN

      和使用的文件名

      System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
      

      我想!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        • 2013-10-07
        相关资源
        最近更新 更多