2011-02-23 67 views
1

我一直在阅读文章: http://www.codeproject.com/KB/silverlight/MEFDynamicLoading.aspx 它描述了如何使用MEF动态下载XAP。它声明共享库应该被引用,并将copy local设置为false。 如果'主机'xap使它们也被复制本地设置为true,那么这很好用,但是这不是我想要支持的场景。 我的应用程序具有相当于某种树结构的类型。对于同一级别的项目,经常(但不总是)共享较大(可能高达1MB)的依赖关系。 我想要的只是在需要时加载这些依赖关系。显而易见的事情只是将本地复制设置为真,但我希望确保依赖项仅下载一次。即使用户然后导航到需要依赖关系的应用程序的其他区域。使用MEF的动态/按需加载XAP依赖关系?

作为最后几点: 我希望能够提前加载这些依赖关系。即当我知道应用程序没有做任何其他值得的事情时。 我还将使用http://www.wintellect.com/CS/blogs/jlikness/archive/2010/05/25/silverlight-out-of-browser-dynamic-modules-in-offline-mode.aspx中描述的脱机目录,以确保它在浏览器之外按预期工作。

回答

1

如果您不希望在主XAP中拥有本地引用,那么要真正做到这一点,唯一的方法就是打开清单并自行解析并且不使用部署目录。您将需要基本上使用我在脱机目录中公开的方法,并保存已加载的引用的字典。然后,您可以复制本地的所有内容,并且代码将检查并只加载引用的程序集,如果它尚未加载。