![](/img/trans.png)
[英].NET 3.5 application High CPU usage indicated by mscorwks.dll InitializeFusion
[英]Dll usage by .NET application
对.NET
专家有疑问。
我有一组WinForms applications
,这些WinForms applications
使用dll的某些子集(其中一些在这些应用程序之间共享)。 所有二进制文件都位于同一目录中。 我需要拆分这些WinForms应用程序,并仅获取具体应用程序所需的dll。 我如何轻松做到这一点(需要快速的“ 5分钟”解决方案)?
我考虑的选择:
domain.ExecuteAssembly(@“ exefilename”); domain.GetAssemblies(); //以确定应用程序使用了哪些程序集。
需要单线程单元属性或单独的线程。 x86,x64和AnyCPU版本有问题。 有关安全性,框架版本等的许多技巧。
因此,我认为这不是一个“ 5分钟”的解决方案,需要进一步调查。
Assembly.GetReferencedAssemblies()
具有1级限制(当程序集引用程序集而又引用另一个程序集时不起作用)。 不适用于原始程序集加载(当您从文件中读取并通过AppDomain.Load方法加载时(Byte [],Byte []))
Process.Modules(来自System.Diagnostics)
从.NET 4开始不起作用(这是为此问题输入的msft connect的错误)。 NET 3.5很棒的“ 5分钟”解决方案,但是我需要.NET 4.5的解决方案。
只需执行该应用程序,然后删除文件夹中的每个dll。 使用过的文件将不会被删除(文件将被锁定)。 但是仍然不能用于原始程序集加载。
你还有其他建议吗?
如果我没记错的话, IlDasm.exe会为您递归检查DLL依赖项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.