Should I use AppDomain.CurrentDomain.BaseDirectory or System.Environment.CurrentDirectory?

前端 未结 7 1545
被撕碎了的回忆
被撕碎了的回忆 2020-11-28 04:28

I have two exe files in the same folder, I can run exe2 from a button in exe1. Today I was observing a customer over a remote (terminal services) session and exe2 failed to

相关标签:
7条回答
  • 2020-11-28 04:59

    I usually use something like:

                string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
                AppPath = AppPath.Replace("file:\\", "");
    
    0 讨论(0)
  • 2020-11-28 05:00

    As I understand it, you should use BaseDirectory. CurrentDirectory could change over the course of the program's execution.

    0 讨论(0)
  • 2020-11-28 05:00

    In Visual studio 2010 test projects, if you enable deployment option of Edit test settings, AppDomain.CurrentDomain.BaseDirectory points to the TestResults\Out folder(not bin\debug). Although, default setting point to bin\debug folder.

    Here I found convincing answer.

    Why AppDomain.CurrentDomain.BaseDirectory not contains "bin" in asp.net app?

    0 讨论(0)
  • 2020-11-28 05:00

    I have also been through this few days back, as I was using

    Environment.CurrentDirectory
    

    as it was giving me issue on the production server but was working fine with my local server,

    So, I tried with

    System.AppDomain.CurrentDomain.BaseDirectory;
    

    And it worked for me in both the Environment.

    So, As all of them has said We should always go with

    System.AppDomain.CurrentDomain.BaseDirectory;
    

    as it checks the Current Domain directory for the path.

    have a look for more information

    Could not find a part of path error on server

    0 讨论(0)
  • 2020-11-28 05:11

    You should use AppDomain.CurrentDomain.BaseDirectory.

    For example in a windows services application:

    System.Environment.CurrentDirectory will return C:\Windows\system32

    While

    AppDomain.CurrentDomain.BaseDirectory will return [Application.exe location]

    Another important factor to note is that AppDomain.CurrentDomain.BaseDirectory is a readonly property while the Environment.CurrentDirectory can be something else if necessary:

    // Change the directory to AppDomain.CurrentDomain.BaseDirectory
    Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;   
    
    0 讨论(0)
  • 2020-11-28 05:20

    AppDomain.CurrentDomain.BaseDirectory returns the directory from where the current application domain was loaded.
    System.Environment.CurrentDirectory returns the current system directory.
    In your case AppDomain.CurrentDomain.BaseDirectory is the best solution.

    0 讨论(0)
提交回复
热议问题