2010-06-17 42 views
0

简单的问题。从MEF加载的XAP访问嵌入式资源

所以MEF不支持导入或导出宽松的文件(如XML文件)等

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

我目前有一个silverlight应用程序,可以动态加载xaps。这些动态加载xaps各有连接作为嵌入资源通过这看起来是这样的一个实例方法入店一个XML文件...

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

但是,此属性有消息称进口“找不到文件“失败后, myFile.xml“在应用程序xap包中。”

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

任何想法?

感谢

回答

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(实际上我不完全确定此方法是否适用于动态加载的XAPs) 。