简单的问题。
因此MEF不支持导入或导出松散文件(例如xml文件)等。
但是,它至少应该支持嵌入式资源吗?
我目前有一个动态加载xaps的silverlight应用程序。这些动态加载的xaps每个都有一个xml文件作为嵌入式资源附加,可以通过看起来像这样的实例方法访问...
public XDocument MenuStructure
{
get
{
return XDocument.Load("myFile.xml");
}
}
但是,导入后此属性失败,并在应用程序xap包中显示“无法找到文件'myFile.xml'。”
我不确定问题是我现在是如何访问该文件的,因为它的BuildAction设置为EmbeddedResource。
有什么想法吗?
由于
答案 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或不)。