【问题标题】:Image Build Action: Difference between None and Embedded Resource?图像构建操作:无资源和嵌入式资源之间的区别?
【发布时间】:2013-02-26 18:11:47
【问题描述】:

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

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

有人告诉我将构建操作设置为嵌入式资源,但我很好奇为什么这会有所作为。我现在将构建操作设置为“无”,并且没有任何文件设置为复制。我可以将构建的应用程序移动到任何地方并启动它,所有图像都显示得很好。 (澄清一下,启动时图片肯定不在程序的目录中,而且看起来还不错)。

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

无 - 文件不包含在项目输出组中,也不包含在 在构建过程中编译。一个示例是一个文本文件,其中包含 文档,例如自述文件。

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

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

所以我很好奇将它设置为嵌入式资源有什么好处。我确实测试了它,并没有什么区别。希望有人能解释发生了什么。

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

谢谢!

【问题讨论】:

    标签: c# visual-studio-2010 .net-4.0


    【解决方案1】:

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

    1. 如果您使用资源文件,则资源文件本身将 包含图像,该文件将被复制到输出目录中。你会 然后从此资源文件中引用图像,所有这些都将是 好吧。 none/embedded/content 的实际图像设置不会 事情。这允许您为各种不同的资源创建资源文件 语言和位置,并根据您的 应用文化。

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

    您使用的是方法#1,因此一旦将其放入资源文件中,您就不必将其放入项目中,因为资源文件已经在项目中,而这就是文件的来源。

    【讨论】:

    • 谢谢。这就是我感到困惑的地方。在我设置图像源时,在我的脑海中,它所做的只是映射到程序启动时图像的位置。当它被添加到资源文件中时,我没有掌握发生了什么。一切都已经清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多