繁体   English   中英

.NET应用程序对DLL的使用

[英]Dll usage by .NET application

.NET专家有疑问。

我有一组WinForms applications ,这些WinForms applications使用dll的某些子集(其中一些在这些应用程序之间共享)。 所有二进制文件都位于同一目录中。 我需要拆分这些WinForms应用程序,并仅获取具体应用程序所需的dll。 我如何轻松做到这一点(需要快速的“ 5分钟”解决方案)?

我考虑的选择:

  1. domain.ExecuteAssembly(@“ exefilename”); domain.GetAssemblies(); //以确定应用程序使用了哪些程序集。

    需要单线程单元属性或单独的线程。 x86,x64和AnyCPU版本有问题。 有关安全性,框架版本等的许多技巧。

    因此,我认为这不是一个“ 5分钟”的解决方案,需要进一步调查。

  2. Assembly.GetReferencedAssemblies()

    具有1级限制(当程序集引用程序集而又引用另一个程序集时不起作用)。 不适用于原始程序集加载(当您从文件中读取并通过AppDomain.Load方法加载时(Byte [],Byte []))

  3. Process.Modules(来自System.Diagnostics)

    从.NET 4开始不起作用(这是为此问题输入的msft connect的错误)。 NET 3.5很棒的“ 5分钟”解决方案,但是我需要.NET 4.5的解决方案。

  4. 只需执行该应用程序,然后删除文件夹中的每个dll。 使用过的文件将不会被删除(文件将被锁定)。 但是仍然不能用于原始程序集加载。

你还有其他建议吗?

如果我没记错的话, IlDasm.exe会为您递归检查DLL依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM