无效的文件名。TitleContainer.OpenStream需要一个相对URI。

3

我在WPF应用程序中遇到了这个错误。

无效的文件名。TitleContainer.OpenStream 需要相对 URI。

pic_texture = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"\Images\performer.png"));

我也尝试过

@"/WpfControlLibrary1;component/Images/performer.png"

没有成功...

如果我这样做

  pic_texture = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"performer.png"));

并将文件放在根目录中

错误是:

加载“performer.png”时出错。找不到文件。

有什么线索吗?

谢谢!

P.S. 我确定文件没问题。

enter image description here

enter image description here

更新:

这篇文章https://gamedev.stackexchange.com/questions/9748/xna-am-i-screwing-up-the-loadcontent-for-texture2d也没有帮助。


1
你能试着不用前导反斜杠(或斜杠)吗? - neeKo
1
你可能已经检查过了 - 但你确定文件一定在那里吗?如果你是通过Visual Studio添加的,请确保在文件属性中选择了“复制到输出目录:仅在较新时复制”。如果我包括前导斜杠“/”,我只会得到“相对URI”错误 - 否则文件加载正常。 - neeKo
1
根据您最新的更新 - 我猜问题可能是WPF的事情。我只能想到一种替代方案 - FileInfo.OpenRead(..),但我不确定它是否适用于WP7或Xbox。 - neeKo
1
@Peretz 在你的项目中应该有一个二进制文件,而在二进制文件中应该有一个调试文件,其中应该包含你的实际应用程序。在Windows资源管理器中打开该目录,并检查是否存在“Images\Performer.png”。 - Sam I am says Reinstate Monica
1
@Peretz 你是否尝试使用 Windows资源管理器(而不是在Visual Studio中)进行检查? - Sam I am says Reinstate Monica
显示剩余5条评论
2个回答

4
我个人猜测一下,但可以尝试。
pic_texture = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Images\performer.png"));

去掉第一个\


调试

在程序中,在出错的那一行之前立即添加以下代码。

FileStream fs = new FileStream("myUniqueFile.txt", FileMode.Create);
fs.Close();

确保你拥有:
using System.IO

在代码文件的顶部添加这行代码。

完成后,搜索你的计算机找到名为"myUniqueFile.txt"的文件,并在评论中告诉我你在哪里找到它。


@Peretz,你是否遇到了相同的错误?还是错误不同? - Sam I am says Reinstate Monica
2
@Peretz 好的,请尝试这样做:右键单击 performer.png,然后选择构建操作为 none,并将“复制到输出目录”设置为 copy if newer - Sam I am says Reinstate Monica
@Peretz 这将确保文件在您的二进制目录中的文件夹内。 - Sam I am says Reinstate Monica
@Peretz,WpfApplication1\bin\x86\Debug 文件夹里还有什么?你的 Images 文件夹在那里吗? - Sam I am says Reinstate Monica
1
@Peretz,顺便问一下,你是否像Niko和我建议的那样更改了解决方案资源管理器中performer.png的属性? - Sam I am says Reinstate Monica
显示剩余2条评论

1
在Visual Studio中,右键单击“performer.png”文件,转到“属性”,将“复制到输出目录”更改为始终复制仅在较新时复制

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接