为什么后台代理加载冗余组件?

时间:2013-02-08 14:38:29

标签: c# windows-phone-7 windows-phone-8 windows-phone

我正在为Windows Phone开发一款应用。此应用程序使用后台代理(计划任务)更新固定到开始屏幕的图块信息。

我有4个项目可以产生4个程序集:

  • MyApp - 具有UI逻辑的主项目
  • MyApp.Core - 应用程序的主要逻辑
  • MyApp.Core.Agent - 后台代理的MyApp.Core的精简版
  • MyApp.Agent - 后台代理

这是代理程序日志的一部分,其中包含代理程序加载的程序集列表:

Zlib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Core.Agent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp.Agent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
System.Runtime.Serialization, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
Microsoft.Phone.Interop, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24EEC0D8C86CDA1E
Microsoft.Phone, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24EEC0D8C86CDA1E
System.Core, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Xml, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
System, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC
System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
System.Windows.RuntimeHost, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7CEC85D7BEA7798E
mscorlib, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC

MyApp.Agent仅在MyApp.Core.Agent上引用,它没有对其他项目的引用。但正如您所见,后台代理启动时也会加载MyApp和MyApp.Core。为什么会这样?我无法理解。 MyApp和MyApp.Core程序集只会减少宝贵的内存空间。

1 个答案:

答案 0 :(得分:0)

发生这种情况的主要原因是从后台代理启用绘图(实际上这个dll被加载,因为它具有支持Visual Tree的所有正确组件)。这不一定是一个很好的理由,因为并非所有代理都在后台渲染,但对于那些没有代理的人来说非常小,因为框架在启动时只读取了少量的dll。