我有一个包含TreeView的Windows窗体。树视图为其项目中嵌入资源的节点具有图像。在我的开发机器上运行表单时(Visual Studio内外),它运行良好,treenodes每个都有其正确的映像。在生产箱上运行时,窗口在尝试加载嵌入的图像时会出现错误。如果发生这种情况,我添加了不使用图像的逻辑,以便树仍然显示,但我想弄清楚问题是什么以及如何解决问题。嵌入式图像的.NET问题
尝试创建新位图时,返回的错误消息是通用“参数无效”。堆栈跟踪将“System.Drawing.Bitmap..ctor(Type type,String resource)”行作为故障点。请参阅下面的代码。
ImageList imageListNodes = new ImageList();
Bitmap mIcon;
mIcon = new Bitmap(this.GetType(), "m2.ico"); // This is the line that fails.
imageListNodes.Images.Add("m", (Image)mIcon);
tvRecords.ImageList = imageListNodes; // This is the treeview used in the form.
文件m2.ico已直接添加到项目中。它的属性包括Build Action = Embedded Resource,以及Copy to Output Directory =不复制。
我的开发计算机运行的是Windows 7,而且生产环境为Windows Server 2003 SP2。该项目是在.NET 3.5中,他们都有。这种形式可以在不同的客户端机器上使用,所以它应该能够在Server 2003中运行起来。
感谢您的任何建议!
编辑: 在几分钟内,并且已经建议此设置根本不起作用。我在上面指出,这在我的电脑上都可以在Visual Studio调试模式下使用,并且可以在自己的电脑上调用。图标文件本身在网络共享上关闭,因此DLL无法将其拉入;文件必须正确嵌入,并且位图/图标转换必须正常工作,否则在我的机器上根本无法工作。
我很欣赏这些建议,并且我愿意尝试其他方法来实现相同的目标,但请注意,我最初的问题至少是为什么这在我的计算机上运行,而不是另一个。谢谢!
使用ILspy或反射器检查生成的exe文件以查看资源是否实际位于部署的程序集中。 –