加载引用的.NET程序集时控制

时间:2012-10-30 07:43:04

标签: c# .net reflection .net-assembly

通常,当执行引用程序集中的类型的第一个方法时,会加载程序集的引用程序集。

强制加载所有引用的程序集是否有意义,应用程序流可以容忍延迟,以避免在可能无法容忍的情况下进一步执行(例如,在时间关键方法中)?

如果是,那么最好的方法是什么? (反思,......)

1 个答案:

答案 0 :(得分:2)

我现在的雇主的一个产品从条目程序集的目录中获取所有DLL的列表。然后使用Assembly.LoadFrom加载它们。它在启动画面启动时执行此操作。坦率地说,代码让我害怕。我们不得不放入一些黑客来避免某些DLL。在更新之前,我们必须更改安装程序以擦除目标目录。这是一个非常不安全的计划。

在上一份工作中,我编写了一个使用GetReferencedAssemblies方法的类似函数。从入口程序集开始,它将递归调用后跟Assembly.LoadFrom。它会在加载我们产品未附带的组件后停止递归。它有效,但我认为这是不必要的。

在我正在使用的本产品中,我们使用Autofac为应用程序构建完整的依赖关系树。配置引导程序代码引用整个项目中的所有服务 - 我猜这至少有70%的代码。同样,这是在启动屏幕启动时触发的。这是正确的方法。它平衡了装载必需品和#34;与"花时间加载一切,包括可能永远不会使用的东西"。