【问题标题】:Preload assemblies: referenced, unreferenced, not loaded until they are needed预加载程序集:引用、未引用、直到需要时才加载
【发布时间】:2013-10-02 03:23:47
【问题描述】:

我想在显示主窗体之前创建一个显示单个程序集加载的启动画面。

我正在通过以下方式进行预加载:

Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
foreach (AssemblyName an in a.GetReferencedAssemblies())
{
    Assembly.Load(an);
}

我有两个问题:

问题一:

一些程序集是在预加载之后加载的,即使它们没有包含在引用中:

“x.vshost.exe”(托管 (v4.0.30319)):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemData\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemData。 dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“x.vshost.exe”(托管 (v4.0.30319)):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.Aero\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.Aero。 dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

我可以通过将程序集连接到引用来解决这个问题,但我不想这样做,因为编译器不会强迫我。

问题 2:

我正在使用 Telerik RadPadeView。在第二页上,我有 ElementHost 控件,其中包含来自 Telerik 的 WPF Gantt(主应用程序是 WinForm)。显示主窗口后,我单击第二个选项卡以查看甘特图。此时,加载了额外的程序集。

“x.exe”(托管 (v4.0.30319)):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXmlLinq\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXmlLinq.dll” , 跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“x.exe”(托管 (v4.0.30319)):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXml\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXml.dll” , 跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

问题是,如何预加载所有程序集:

  1. 参考
  2. 未引用(问题 1)
  3. 在需要时才加载(问题 2)

【问题讨论】:

    标签: c# winforms reference assemblies preload


    【解决方案1】:
    Assembly.Load
    

    您是否只需要从已引用类型或文件路径加载程序集。 见MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 2014-02-22
      • 2016-02-22
      相关资源
      最近更新 更多