El montaje de ejecución puede ser un DLL si el código se encuentra en una biblioteca:
var executingAssembly = Assembly.GetExecutingAssembly(); //MyLibrary.dll
var callingAssembly = Assembly.GetCallingAssembly(); //MyLibrary.dll
var entryAssembly = Assembly.GetEntryAssembly(); //WpfApp.exe or MyLibrary.dll
Así que la La mejor manera que encontré es (C#):
var wpfAssembly = (AppDomain.CurrentDomain
.GetAssemblies()
.Where(item => item.EntryPoint != null)
.Select(item =>
new {item, applicationType = item.GetType(item.GetName().Name + ".App", false)})
.Where(a => a.applicationType != null && typeof(System.Windows.Application)
.IsAssignableFrom(a.applicationType))
.Select(a => a.item))
.FirstOrDefault();
Así, en su caso, se puede encontrar la ubicación de la asamblea:
var location = wpfAssembly.Location;
posible duplicado de [Obtener ruta de la aplicación] (http://stackoverflow.com/questions/218061/get-the-applications- ruta) –
¿No? Java! = C#? – Kian