如何解决Assembly.Load性能问题?

时间:2010-01-19 02:02:07

标签: .net assemblies assembly.load

我正在重构一些代码而且我遇到了困境。

假设我们有以下情况:

  1. 包含许多通用接口和类的核心程序集
  2. 包含更多专业类的库装配。
  3. 图书馆大会参考核心大会。到目前为止一切都很好。

    由于我正在重构这一点,因此需要Core Assembly来创建在Library Assembly中声明的对象。

    好的,为了避免循环引用问题,我决定在需要时加载库程序集(并且只在类型初始化时非常特殊的地方需要它。)

    然而,整个事物的装载性能急剧下降到黑暗的深渊......

    有谁知道如何解决这个问题?


    已编辑添加

    有些人已经请求我用来加载的代码......真的非常简单。

    /*
     * Load the Library Assembly
     */
    Assembly asm = Assembly.Load("Library, PublicKeyToken=...");
    
    /*
     * Get desired type
     */
    Type   t = asm.GetType("Library.DesiredType")
    
    /*
     * Get the default constructor
     */
    var ctor = type.GetConstructor(new Type[] {})
    

1 个答案:

答案 0 :(得分:5)

程序集只应加载到AppDomain中一次。重复调用以加载程序集X应该返回已经加载的程序集。 您可以发布代码以了解您的尝试方式吗?您如何衡量“绩效”?您是否已分析过您的应用程序以验证性能损失是否确实来自加载程序集?