繁体   English   中英

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

[英]Control when referenced .NET assemblies are loaded

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

强制在应用程序流程可以容忍延迟的位置强制加载所有引用的程序集,以免在可能无法容忍的进一步执行中避免延迟(例如,在时间紧迫的方法中)吗?

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

我目前的雇主产品之一是从条目集的目录中获取所有DLL的列表。 然后,使用Assembly.LoadFrom将它们全部加载。 它在启动屏幕启动时执行此操作。 坦白说,代码使我感到恐惧。 我们不得不采取一些措施来避免某些DLL。 我们必须更改安装程序才能在更新之前将目标目录清除干净。 这是一个非常不安全的计划。

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

在我正在研究的当前产品中,我们使用Autofac为应用程序构建完整的依赖树。 用于配置引用整个项目中所有服务的引导程序代码-我想至少是代码的70%。 同样,在启动屏幕启动时触发。 这是正确的方法。 它平衡了“加载必需品”和“花时间加载包括永不使用的东西在内的所有内容”。

暂无
暂无

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

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