Question

I have a managed DLL (written in C++/CLI) that contains a class used by a C# executable. In the constructor of the class, I need to get access to the full path of the executable referencing the DLL. In the actual app I know I can use the Application object to do this, but how can I do it from a managed DLL?

Was it helpful?

Solution

Assembly.GetCallingAssembly()

or

Assembly.GetExecutingAssembly()

or

Assembly.GetEntryAssembly()

Depending on your need.

Then use Location or CodeBase property (I never remember which one).

OTHER TIPS

@leppie: Thanks - that was the pointer I needed.

For future reference, in C++/CLI this is the actual syntax that works:

String^ appPathString = Assembly::GetEntryAssembly()->Location;

GetExecutingAssembly() provided the name of the DLL

GetCallingAssembly() returned something like System.Windows.Forms

GetEntryAssembly returned the full path, similar to GetModulePath() under Win32.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top