10

我不确切知道它是否是一个错误,但我一直收到运行时 IOException 错误,说找不到资源。

我在画布背景中的应用程序(c#、WPF)中加载一些图像取决于数据库状态。问题是,我无法加载 LAST(按字母顺序排序)文件。例如,我在文件夹中有 15 张图像。我可以毫无问题地先加载 14 个。但是最后一个总是抛出异常。

我 100% 确定,我在文件夹中有图像(请参阅下面的 !image-printscreen)。还有我是怎么写的。14 首先我可以毫无问题地加载,只有最后一个抛出异常。

这是 WPF-c# 中的错误还是我做错了什么?

代码什么是抛出异常:

canvas_status.Background = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), @"Images\" + statusName + ".png")));

canvas_name.Background = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), @"Images\" + statusName + bulheadName + ".png")));

错误:

IOException was unhalded
Cannot locate resource 'view/images/panel_uzavreno_d.png'.

图像(更高分辨率单击图像鼠标右键并单击显示图像或类似的东西):

打印屏幕

4

2 回答 2

37

我有一个类似的问题:IOException,找不到确实存在于程序集中的 png 资源。

我通过显式指定程序集名称找到了解决方案,即使调用者与资源在同一个程序集中。

以下是使用 Pack URI 语法时的样子:

pack://application:,,,/MyAssemblyName;component/MyResourcesFolder/MyImage.png

(有关 Pack URI 的更多信息,请参阅http://msdn.microsoft.com/en-us/library/aa970069.aspx

编辑:在指定程序集名称后我必须做的另一件事是清理项目。构建后问题再次出现,但在清理中间产品后得到解决。这绝对是 Visual Studio 中的一个错误。

于 2012-10-28T19:30:08.227 回答
23

您需要将图像的构建操作设置为“资源”类型。

鼠标右键单击文件>>属性>>将“构建操作”设置为“资源”

于 2014-08-11T09:19:39.850 回答