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

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

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

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

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

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

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

点赞