我有很多常见的第三方dll,我在多个银灯项目中使用。每个都生成自己的XAP文件与thrid party dll的相同副本。我想知道,只有当本地缓存dll与以前加载的其他一些XAP使用的常用dll不同时,是否可以将常见的第三方dll分开并加载?
换句话说,我在想的是,第一次当我进入一个新的silverlight页面时,它会加载应用程序XAp和Common XAP文件,从那个silverlight应用程序,我转到另一个silverlight页面,反过来加载另一个XAP,但这一次,它不会加载公共dll XAP,因为它已经被第一个XAP加载加载。
谢谢,
答案 0 :(得分:3)
如果第三方DLL做得好,它们会带有一个.extmap.xml文件,该文件准确地说明了这种情况。但是您需要通过检查Silverlight项目中的“使用应用程序库缓存减少XAP大小”选项来打开它。有关其工作原理的详细信息,请参阅http://msdn.microsoft.com/en-us/library/dd833069(VS.95).aspx。
答案 1 :(得分:1)
我认为更优化的解决方案是尝试使用ComponentOne XAPOptimizer之类的东西来缩小XAP / Zip文件。您的方法的问题在于您在项目之间引入了依赖关系,如果一个或多个项目发生更改,则无法管理这些关联。 This是降低XAP文件大小的策略的良好资源。
答案 2 :(得分:1)
我相信你有一个主要的XAP来调用加载其他XAP,对吗? 您需要做的就是,在每个DLL的属性中,将属性“复制到本地”更改为FALSE ,但主XAP除外。 当用户下载主XAP时,DLL将可供所有家属XAP使用。