如何将程序集加载到应用程序域中

本文关键字:应用程序域 加载 程序集 | 更新日期: 2023-09-27 18:31:08

什么决定了程序集何时以及是否加载到 AppDomain 中。

我想我试图了解是否:

  1. 我保证所有项目引用的程序集都将是在我的应用程序开始时加载。
  2. 如果不是,确切地说什么时候做他们被加载了?这将是我第一次使用该程序集中的类/函数?
  3. 有没有办法告诉编译时(如果必须先加载程序集,则在执行之前)代码中的第一行?(我知道我可以使用反射,但我想知道我是否可以在编译时配置它)
  4. 假设我可以控制何时加载程序集,那么依赖的呢集会?我可以告诉执行只加载到 1st/2 度吗并让其余的动态加载?

如何将程序集加载到应用程序域中

  1. 不,您可以保证相反:仅加载启动时直接需要的程序集。
  2. 是的,一旦某些类需要来自该程序集的类型信息或需要该程序集的代码将被 JIT 化,就会尝试加载程序集。
  3. 不,在编译时无法强制程序集加载序列,而不是从Main中的每个程序集引用某些内容(请注意,通常目标是相反的 - 延迟加载尽可能多的程序集以加快应用程序的加载)。
  4. 不,您无法控制自动加载(正如 Simon Edström 指出的那样,当 CLR 决定需要程序集时,会触发程序集解析事件)。如果您知道依赖项,则始终可以自己预加载程序集。

注意:程序集不直接"依赖"彼此,只是每个程序集中的类/方法相互依赖。

我不知道细节,但我知道当无法加载程序集时,会出现事件。所以我想它们是在运行时加载的,你可以向它添加例程。

我认为这将对您有关程序集解析 http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx 有所帮助

这是关于程序集加载事件 http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyload.aspx