Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get directory where executed code is located

Tags:

c#

.net

getfiles

I know that in the same directory where my code is being executed some files are located. I need to find them and pass to another method:

MyLib.dll
Target1.dll
Target2.dll

Foo(new[] { "..\\..\\Target1.dll", "..\\..\\Target2.dll" });

So I call System.IO.Directory.GetFiles(path, "*.dll"). But now I need to get know the path:

string path = new FileInfo((Assembly.GetExecutingAssembly().Location)).Directory.FullName)

but is there more short way?

like image 281
abatishchev Avatar asked Jul 17 '10 11:07

abatishchev


Video Answer


2 Answers

You may try the Environment.CurrentDirectory property. Note that depending on the type of application (Console, WinForms, ASP.NET, Windows Service, ...) and the way it is run this might behave differently.

like image 60
Darin Dimitrov Avatar answered Oct 05 '22 05:10

Darin Dimitrov


Environment.CurrentDirectory returns the current directory, not the directory where the executed code is located. If you use Directory.SetCurrentDirectory, or if you start the program using a shortcut where the directory is set this won't be the directory you are looking for.

Stick to your original solution. Hide the implementation (and make it shorter) using a property:

private DirectoryInfo ExecutingFolder
{
    get
    {
        return new DirectoryInfo (
            System.IO.Path.GetDirectoryName (
                System.Reflection.Assembly.GetExecutingAssembly().Location));
    }
}
like image 21
Harald Coppoolse Avatar answered Oct 05 '22 04:10

Harald Coppoolse