你的DLL加载时事件/检测?

时间:2014-01-30 05:18:25

标签: c# .net dll

想象一下MainLibrary.dlldynamically loading other helper DLLs。这是我们的设计变更,为此我们需要通过注册AssemblyResolve回调来引导过程。

当存在单个入口点时(例如:Main()),这很容易做到,但在我们的例子中,MainLibrary.dll有多个入口点。我们希望避免引入明确的Init()调用,因为这会破坏现有的客户端库API(“您必须在调用DoSomeWork()之前调用Init()。” / p>

那么库有没有办法知道它何时被加载或即将被使用?这样我们就可以锁定它来执行我们的注册,在动态加载更改之前维护客户端库接口。

1 个答案:

答案 0 :(得分:0)

汇编没有内置的方式来知道它何时被加载(与在加载时调用DllMain的本机代码不同)。

如果无法加载默认加载规则,您需要重新组织代码以了解何时加载其他二进制文件。

廉价的方法是提供(甚至可以自动生成)一层接口/对象包装器实现,它们只需在调用实际API之前强制加载依赖项。