Sometimes it becomes necessary to find out the directory where the current executing assembly is running. Among several ways to do the task , the following code–snippet can be employed to return the absolute location of the loaded file that contains the manifest:
using System.Reflection; | |
string currentAssemblyDirectoryName = Path.GetDirectoryName( | |
Assembly.GetExecutingAssembly() | |
.Location | |
); |
Beware that Assembly.Location
property returns the location of the assembly file after it is shadow-copied. In addition , if it is dynamically loaded using Load method, it returns empty string .
As stated in the comments below, if you are interested in retrieving the location of the assembly before it is shadow-copied or loaded, use Assembly.CodeBase
property instead. Please note that, it is the location specified originally while stating the AssemblyName.
Thanks that was very helpgul
Hello,
I’d add the required using declaration
using System.Reflection;
Thanks & best regards,
Andreas
Thx…exactly what I was looking for!
Hi,
Assembly.GetExecutingAssembly().Location does not return the current path of the assembly.
Please use
Uri assemblyUri = new Uri(Assembly.GetExecutingAssembly().CodeBase);
string path = Path.GetDirectoryName(assemblyUri.LocalPath);
Thanks
Thanks Muhammad,
Indeed you are right in the case when you would like to get the location before the assembly is shadow-copied.
Regards, Adil