使用MEF导出使用xap中包含的资源(xml)的项目

时间:2010-03-08 21:10:03

标签: silverlight-4.0 mef

我正在使用MEF在SL4中进行概念证明应用程序,并且作为应用程序的一部分,我从现有的Silverlight项目导入另一个xap并将其显示在我的主机项目中。

问题是现有应用程序使用一些.xml文件(作为内容),并使用linq2xml加载这些(假设)捆绑在xap中的文件。

当我编写应用程序时,初始化失败,因为主机应用程序不包含xml文件。如果我将这些xml文件复制到主机项目并运行它,组合工作正常。但是,我需要将xml文件保留在原始项目中。

有没有办法可以下载xap并查看xml文件的内容,然后在运行时将它们加载到主机xap中,以便在发生组合后可以找到所需的xml资源?

或者我应该使用导入/导出制定某种合同来将xml文件传递给主机xap?

由于开发导入的xaps的人(如果项目继续进行)来自不同的公司,我希望将他们开发应用程序的方式保持最小化。

2 个答案:

答案 0 :(得分:0)

我假设你使用DeploymentCatalog下载第二个xap?不幸的是,没有办法获得该xap中包含的资源。您可以将资源嵌入到xap中包含的程序集中,然后修改它们的加载方式。

如果您真的不想改变辅助xap的结构方式,您可以编写自己的DeploymentCatalog,这也可以让您从下载的xap加载资源。可以使用DeploymentCatalog的源代码,因此您可以将其作为基础。

答案 1 :(得分:0)

我设法找到了一个我非常满意的解决方案。

我没有将.xml文件构建为xip内的'content',而是将它们构建为'resource',然后使用Application.ResourceStream()并使用流加载xml。

这意味着第二个xap开发人员将不得不改变他们的操作方式,但它只需要增加一行代码并更改Build Action,我相信他们可以处理。