.NET应用程序的DLL使用

时间:2013-05-21 13:06:44

标签: c# .net dll appdomain

.NET专家提出问题。

我有一组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连接上的错误)。对于.NET 3.5来说,这将是一个很棒的“5min”解决方案,但我需要一个.NET 4.5的解决方案。

  4. 只需执行该应用并删除该文件夹中的每个dll即可。使用的那些将不会被删除(文件将被锁定)。但是,仍然不能用于原始装配加载。

  5. 你还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

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