图像构建操作:无和嵌入式资源之间的区别?

Wri*_*boy 7 c# .net-4.0 visual-studio-2010

我在我的一些按钮上使用图片,我不希望这些图像包含在输出中.

这些图像是通过按钮属性设置的,因此它们在Resource.resx文件中定义.

我被告知要将Build Action设置为Embedded Resource,但我很好奇为什么这会产生影响.我现在将构建操作设置为"无",并且没有任何文件设置为复制.我可以将构建的应用程序移动到任何地方并启动它,所有图像都显示得很好.(只是为了澄清一下,这些图像在启动时肯定不在程序目录中,它们看起来还不错).

我在MSDN上查了一下并得到了这个:

无 - 文件未包含在项目输出组中,并且未在构建过程中编译.一个示例是包含文档的文本文件,例如自述文件.

嵌入式资源 - 此文件作为DLL或可执行文件嵌入在主项目构建输出中.它通常用于资源文件.

但是从这听起来好像将它们全部设置为无甚至不应该工作(但确实如此).

所以我很好奇它将嵌入式资源设置给它带来了什么好处.我测试了它,没有区别.希望有人能解释发生了什么.

我唯一的假设是,当通过按钮设置图像属性并且条目被添加到资源文件时,它不会连接到添加到项目中的文件(即使它们是相同的).因此,如果您以这种方式设置图像属性,那么图像甚至不需要包含在项目中(即在解决方案资源管理器中).

谢谢!

Bry*_*rts 10

你似乎偶然发现了两种不同的显示图像的方式.

  1. 如果使用资源文件,则资源文件本身将包含图像,该文件将被复制到输出目录中.然后,您将从该资源文件中引用该图像,一切都会很好.none/embedded/content的实际图像设置无关紧要.这允许您为各种语言和位置创建资源文件,并根据应用程序文化更改使用的图像.

  2. 引用图像的另一种方法是嵌入图像或将其设置为项目中的内容.如果将其设置为内容,它将复制到输出目录,并可根据位置进行物理引用,或者如果嵌入它,文件将位于创建的dll内,您可以使用该文件在其中提取资源流内置功能.

您正在使用方法#1,所以一旦将它放在资源文件中,您就不必在项目中拥有它,因为资源文件已经在项目中,而且文件将来自该文件.