我正在尝试将我的 DLL 的新副本部署到远程服务器上的 GAC,但我需要确定当前运行的任何进程是否有我要替换的 DLL 的加载副本 - 我想重新启动它们,或者在至少告诉用户。
例如,Biztalk 似乎会在第一次使用它们时加载它需要的 DLL,然后替换它们会将旧副本保留在内存中,直到重新启动主机实例 - 作为部署的一部分,我可以轻松地做到这一点。
有没有办法使用 .NET 来判断哪些进程从 GAC 加载了特定的 DLL?
更新:
一些进一步的调查表明 Process Explorer 都具有此功能,而另一个 Sysinternals 工具ListDLL正是我想要做的。我想知道他们是如何做到的,因为我很想在我的应用程序中复制这个功能,而不必包含和屏幕抓取 ListDLL(如果许可证中甚至允许这样做的话)。