Скажем, у меня есть приложение: C: \ MyPrograms \ App.exeПолучить расположение динамически загружаемой сборки
Это приложение не ссылается Library.dll. App.exe может динамически загружать сборки.
И давайте говорить о том, что путь к DLL является C: \ MyPrograms \ библиотека DLL \ Library.dll
Я могу получить путь исполняющей сборки (App.exe), независимо от того, что я не попробую ,
GetExecutingAssembly()
GetEntryAssembly()
AppDomain.CurrentDomain.BaseDirectory
Есть ли способ, чтобы получить местоположение DLL, который динамически загружается? Все просто возвращает, для примера, расположение App.exe
EDIT 1: Перефразируя OP ...
MyApp.exe может вызвать любой DLL, через проходя путь к DLL. Эта DLL может быть где угодно, когда пользователь ее удаляет. Выпуск жестко-кодирующих путей или что-то в этом роде.
Что я хотел бы сделать, так это получить текущее местоположение динамически загружаемой библиотеки DLL. т.е. для обработки ошибок, я хотел бы иметь возможность записывать журнал ошибок в тот же каталог, в котором находится DLL.
Я нашел и попробовал несколько способов получить место, где находится загруженная DLL, однако это либо возвращает каталог сборки CALLING (MyApp.exe) или вообще ничего.
может получить или cannnot получить путь ?? –
Похоже, вы хотите обрабатывать ['AssemblyResolve'] (https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve (v = vs.110) .aspx) событие ... –
Допустим, вы регистрируете ошибки, как вы обнаруживаете, из какой DLL возникла ошибка? Можете ли вы написать пример кода, как он будет работать в вашем вопросе, для строки, где вам понадобится путь, просто введите «var path = MagicFunctionThatGetsPath (sourceDll)», я хочу знать, как вы вычисляете «sourceDll» и каков тип этого объекта. –