MyProject.resources文件出现FileNotFoundException错误

3

我正在尝试将图片添加到一个按钮上(C# Winform,VS2010)。我通过在Resources.resx文件中添加现有项来添加资源。然后,我将我的图像分配给按钮,一切看起来都很好。但当我运行程序时,出现了以下错误:

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll

Additional information: Could not load file or assembly 'BmsReplayAnalysis.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. 

在这段代码中:
public static System.Drawing.Bitmap play1 {
    get {
        object obj = ResourceManager.GetObject("play1", resourceCulture); <-- DIES HERE
        return ((System.Drawing.Bitmap)(obj));
        }
    }

有人能告诉我我做错了什么吗?


3
好的,我明白了正在发生什么。我的代码中有一个"assemblyresolveEventHandler"。我有一个万能的"catch all else"语句,将"Myassembly.resources.dll"指向错误的位置。 - Jason
1个回答

1

当你只给出一个文件名时,运行时它会在当前文件夹中寻找该文件。如果你是在调试模式下运行,它会在调试文件夹中寻找play1。如果没有找到,就会报错。


1
那么实现这个的正确方式是什么?我以为它会被嵌入到我的可执行文件中? - Jason
据我所知,它不会嵌入到你的程序中。唯一的方法是给它一个完整的路径到图像并将图像保留在那里。或者将图像保留在可执行文件的相同路径中。 - Grant
如果是这样的话,那么嵌入式资源这个术语就不准确了。我并不认为是这种情况吧? - Jason
我正在修复我的2010年版,并将在此期间尝试并检查2008年版。 - Grant
我不知道。我无法复制这个错误。我进入资源并添加一个现有文件。将其命名为image.jpg,进入form1[design],将本地资源image.jpg附加到我想要的按钮上,然后它会出现在按钮上。如果我删除其位置中的图像,则仍然可以在表单中使用,如果我删除本地资源,则会出现错误而不是未处理的异常。 - Grant
2
好的,我弄清楚了发生了什么。我的代码中有一个assemblyresolveEventHandler。我有一个捕获所有异常的语句,它将Myassembly.resources.dll指向了错误的位置。 - Jason

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