微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从C#中列出已使用/未使用的本机库?

如何解决如何从C#中列出已使用/未使用的本机库?

我有一个.net(4.7.2)应用程序,该应用程序使用[DllImport("Foo.dll"...)]调用第三方本机库。原生Foo.dll用C ++编写,并且有很多依赖项:当前提供了90个程序集和360 MB(!)。我知道一些依赖项已交付,但不再使用。要求第三方进行清理没有任何效果,它每隔几个月就会越来越多。

问:有什么方法可以将所需的,主动加载的 native 程序集与dll膨胀区分开来吗?

我已经在应用程序退出时尝试过AppDomain.GetAssemblies(),但是它只返回托管程序集。 我已经对DependencyWalker及其现代兄弟Dependencies进行了试验,但是似乎Foo.dll的大多数真正必需的依赖项是按需加载的,这些应用程序中只有一小部分显示。 / p>

解决方法

您可以使用Procmon来跟踪正在动态加载的程序集。

但是,如果仅在使用该功能的情况下才加载某些程序集,那么除了查看代码(如果可以)或通过 all 进行检查之外,您别无选择。代码路径并跟踪所有已加载的dll。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。