【问题标题】:Accessing embedded resources from MEF loaded XAPs从 MEF 加载的 XAP 访问嵌入式资源
【发布时间】:2010-06-19 01:05:05
【问题描述】:

简单的问题。

所以MEF不支持导入或导出松散文件(如xml文件)等。

不过,它至少应该支持嵌入式资源吧?

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

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

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

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: silverlight mef


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-11-25
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 2012-02-05
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        相关资源
        最近更新 更多