How do I find the current executable filename?

Viewed 115790

Possible Duplicate:
How do I get the name of the current executable in C#?

An executable file loads an external library.
Is there a way for the library to know the calling executable file?

(I would have sworn I saw the answer to this elsewhere, but I can't seem to find it anymore)

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

If you want the executable:

System.Reflection.Assembly.GetEntryAssembly().Location

If you want the assembly that's consuming your library (which could be the same assembly as above, if your code is called directly from a class within your executable):

System.Reflection.Assembly.GetCallingAssembly().Location

If you'd like just the filename and not the path, use:

Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location)

I think this should be what you want:

System.Reflection.Assembly.GetEntryAssembly().Location

This returns the assembly that was first loaded when the process started up, which would seem to be what you want.

GetCallingAssembly won't necessarily return the assembly you want in the general case, since it returns the assembly containing the method immediately higher in the call stack (i.e. it could be in the same DLL).

Related