.net 如何解决组装。加载性能命中?

.net 如何解决组装。加载性能命中?,.net,assemblies,assembly.load,.net,Assemblies,Assembly.load,我正在重构一些代码,我陷入了进退两难的境地 假设我们有以下场景: 包含许多通用接口和类的核心程序集 包含更多专用类的库程序集 库程序集引用核心程序集。到目前为止还不错 由于我正在重构它,所以需要核心程序集创建在库程序集中声明的对象 好的,为了避免循环引用问题,我决定在需要时加载库程序集(并且只在类型初始化时的一个非常特定的点上需要它) 然而,整个事情的装载性能一落千丈 有人知道如何解决这个问题吗 编辑以添加 有些人请求我用来加载的代码。。。这真的很琐碎 /* * Load the Libra

我正在重构一些代码,我陷入了进退两难的境地

假设我们有以下场景:

  • 包含许多通用接口和类的核心程序集
  • 包含更多专用类的库程序集
  • 库程序集引用核心程序集。到目前为止还不错

    由于我正在重构它,所以需要核心程序集创建在库程序集中声明的对象

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

    然而,整个事情的装载性能一落千丈

    有人知道如何解决这个问题吗


    编辑以添加

    有些人请求我用来加载的代码。。。这真的很琐碎

    /*
     * 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[] {})
    

    程序集只应加载一次到AppDomain。对load assembly X的重复调用应返回已加载的程序集。你能发布你如何尝试的代码吗?你如何衡量“绩效”?您是否分析了您的应用程序,以验证加载程序集确实会对性能造成影响?

    确实,在启动时加载单个程序集会使性能变得不可接受?这个程序集有多大?它小得可笑:52K(52224字节)如果你正在重构,为什么不将公共依赖项重构成第三个程序集,这样你就不存在循环依赖性问题,因此不需要依赖动态加载?@Aaronaught OP使用了一个糟糕的措辞来描述这种情况,但除了可怕的词语之外“循环引用”,该场景是一个完全合法的设置。你是对的,问题不是程序集加载。它完全无关…所以,回到绘图板上!