4

我正在为 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 程序集只会减少宝贵的内存空间。

4

1 回答 1

0

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

于 2013-06-05T04:51:51.010 回答