小编Dom*_*nik的帖子

预加载程序集:引用,未引用,在需要之前不加载

我想在显示主窗体之前创建一个启动屏幕,显示单个装配的加载.

我正在做的预加载:

Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
foreach (AssemblyName an in a.GetReferencedAssemblies())
{
    Assembly.Load(an);
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

问题1:

某些程序集在预加载后加载,即使它们未包含在引用中:

'x.vshost.exe'(Managed(v4.0.30319)):已加载'C:\ windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemData\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemData.dll',跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.

'x.vshost.exe'(Managed(v4.0.30319)):已加载'C:\ windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.Aero\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.Aero.dll',跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.

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

问题2:

我正在使用telerik RadPadeView.在secound页面上,我有一个ElementHost控件,它包含来自Telerik的WPF Gantt(主应用程序是WinForm).在显示主窗口后,我点击第二个选项卡查看甘特图.在这一点上,加载了额外的组合.

'x.exe'(Managed(v4.0.30319)):已加载'C:\ windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXmlLinq\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXmlLinq.dll',已跳过loading符号.模块已经过优化,调试器选项"Just My Code"已启用.

'x.exe'(Managed(v4.0.30319)):已加载'C:\ windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXml\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXml.dll',已跳过loading符号.模块已经过优化,调试器选项"Just My Code"已启用.

问题是,如何提前下载所有组件:

  1. 引用
  2. 未引用(问题1)
  3. 在需要之前不加载(问题2)

c# assemblies reference preload winforms

7
推荐指数
1
解决办法
761
查看次数

添加带有前缀但不带命名空间的开始元素

有没有办法在 XmlWriter 中使用 WriteStartElement 函数,如下所示:

XmlWriter.WriteStartElement("prefix", "name", null);
Run Code Online (Sandbox Code Playgroud)

发生错误:System.ArgumentException:“无法使用带有空命名空间的前缀。”

我不想在创建元素时设置命名空间 URI。
稍后,当创建其他属性时,我将通过 WriteAttributeString() 添加它。

c# xml xmlwriter prefix xml-namespaces

5
推荐指数
1
解决办法
2553
查看次数