假设我有一个应用程序:C:\MyPrograms\App.exe
这个应用程序不引用library.dll。App.exe可以动态加载程序集。
假设DLL的路径是C:\MyPrograms\DLLs\library.dll
无论我尝试什么方法,我都可以获取执行程序(App.exe)的路径。
GetExecutingAssembly()
GetEntryAssembly()
AppDomain.CurrentDomain.BaseDirectory
是否有一种方法可以获取动态加载的DLL的位置?对于该示例,所有内容都只返回App.exe的位置。
编辑1: 重述OP ...
MyApp.exe可以通过传递DLL的路径来调用任何DLL。用户可以将此DLL放在任何地方。排除硬编码路径或类似方法。
我想做的是能够获取动态加载的DLL的当前位置。即为了处理错误,我想能够将错误日志写入与DLL相同的目录中。
我找到并尝试了一些方法来获取加载的DLL所在的位置,但这要么返回调用程序集(MyApp.exe)的目录,要么根本没有返回。
AssemblyResolve
事件... - Heretic Monkeyvar path = MagicFunctionThatGetsPath(sourceDll)
,我想知道您是如何确定sourceDll
并且该对象的类型是什么。 - Scott Chamberlain