从MEF加载的XAP访问嵌入的资源

时间:2010-06-17 11:27:24

标签: silverlight mef

简单的问题。

因此MEF不支持导入或导出松散文件(例如xml文件)等。

但是,它至少应该支持嵌入式资源吗?

我目前有一个动态加载xaps的silverlight应用程序。这些动态加载的xaps每个都有一个xml文件作为嵌入式资源附加,可以通过看起来像这样的实例方法访问...

public XDocument MenuStructure
    {
        get
        {
            return XDocument.Load("myFile.xml");
        }
    }

但是,导入后此属性失败,并在应用程序xap包中显示“无法找到文件'myFile.xml'。”

我不确定问题是我现在是如何访问该文件的,因为它的BuildAction设置为EmbeddedResource。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

好的,根据http://msdn.microsoft.com/en-us/library/ms596994(VS.95).aspx我应该使用Application.GetResourceStream。一切都很好。

答案 1 :(得分:1)

您是正确的,MEF不支持从二级下载的XAP加载资源。但是,您可以执行嵌入式资源(嵌入在程序集中而不是XAP中),但是访问它的方式不会从嵌入式资源中提取文件。

对于BuildAction EmbeddedResource,您需要从Assembly.GetManifestResourceStream(...)(http://msdn.microsoft.com/en-us/library/xc4235zt.aspx)获取流。 对于BuildAction资源,您需要构建一个正确的包uri(请参阅资源文件包URI - 在http://msdn.microsoft.com/en-us/library/aa970069(VS.85).aspx中引用的程序集)并传递给Application.GetResourceStream(我实际上并不完全确定这种方法是否适用于动态加载的XAP或不)。