在内容资源上调用的Application.GetResourceStream仍然返回null

时间:2011-09-12 21:28:28

标签: c# .net windows-phone-7 embedded-resource

这是VS2010项目(Windows Phone)结构中与任务相关的部分:

enter image description here

代码正在从DummyMediaLibProvider.cs执行:

public class DummyMediaLibProvider: IMediaLibProvider
{
    ...
    StreamResourceInfo albumArtPlaceholder = 
        Application.GetResourceStream(
            new Uri("../Images/artwork.placeholder.png", UriKind.Relative));

artwork.placeholder.png 构建操作设置为内容

但是,每当我运行代码时,Application.GetResourceStream都会返回null。

资源无法读取内存的原因可能是什么?

我试图删除项目的obj目录,做了Clean和Rebuild,但到目前为止没有任何帮助。

更新

如果我将Build Action:Resource应用于artwork.placeholder.png,我可以获得资源流。

P.S。这不是Application.GetContentStream returns null for content Uri的重复,因为上一次有扩展(particurarly .xml)相关的问题。

1 个答案:

答案 0 :(得分:21)

提供的路径Application.GetResourceStream不是相对于类的位置,而是相对于应用程序包。

StreamResourceInfo albumArtPlaceholder = 
    Application.GetResourceStream(
        new Uri("Images/artwork.placeholder.png", UriKind.Relative));

将是正确的道路。您还可以尝试使用完整包URI。 (see MSDN

最后,Resource将是正确的Build Action