如何将资源(例如图像)与exe文件一起打包?

30

我不知道我是否表达清楚了,但基本上发生的情况是,我制作了一个winform应用程序,它从资源文件夹加载图像。

问题在于,当我构建项目并获取exe文件后将其交给朋友时,他没有像我一样的资源文件夹,因此他会收到“缺少文件”的错误提示。

我如何将图像与我的应用程序混合、合并或附加起来?


可能是从资源中加载图像的C#问题的重复 - Erik Funkenbusch
@MystereMan 谢谢,正如你所说,我并不想加载图片。 关于你的问题,是的,用户有能力更改表单的背景图片。 (有一个主题下拉框,用户可以选择主题) - vexe
@Beska - 是的,所以我想我刚刚回答了他接下来显而易见的问题 ;) - Erik Funkenbusch
我的意思是,用户能否搞乱图像?他们可以添加自己的图像吗?如果可以,你就不能真正使用嵌入式资源(尽管你可以编写一些逻辑来使用嵌入式资源,如果用户没有使用自己的)。你最好编写一个安装程序,该安装程序将安装您的应用程序(包括将其添加到开始菜单)并复制所需的任何其他文件。 - Erik Funkenbusch
抱歉,我是指Beska所说的.. :) - vexe
显示剩余2条评论
2个回答

35

应用程序属性窗口

您需要通过导航到“属性”窗口并转到资源选项卡,从那里添加图片将其添加到项目中。

另外,您可以从PictureBox控件中导入计算机中的资源。

选项2


3
您可以将图像包含在您的项目中,并将其构建类型标记为嵌入式资源。 - Erik Funkenbusch
1
同意,但是当我这样做时,在资源管理器区域中它并不可见。 - Glenn Ferrie
@MystereMan,所以在我标记完它之后,如果我想要加载它,我应该从资源文件中加载吗? 我的意思是,我应该这样做:string path = "imagePath\image.jpg"; 然后像这样加载它:BackGround = Image.FromFile(path); - vexe
这样做的话,我就不用将资源文件和exe一起发送给我的朋友了,对吧? - vexe
你应该发送给你的朋友 'bin' 文件夹中的内容。 - Glenn Ferrie

4

如果你将来不需要更新它,那么使用图片属性“build action”设置为“embedded resource”编译你的程序。 如果你将来需要更改它,则使用“build action”属性设置为“content”进行编译。


请问您知道我可以在哪里找到它吗? - vexe
只需在 Visual Studio 的文件资源管理器中右键单击图像文件并选择“属性”,其中一个属性是“生成操作”。将其更改为嵌入式资源或内容。它的默认值为“无”。 - Riccardo
非常感谢您 :) 但是,您能告诉我“嵌入式资源”和“内容”之间的区别吗? - vexe
@VeXe - 内容不嵌入资源,嵌入式资源才会。 - Erik Funkenbusch
如果您在构建后想要更改图像,但将图像标记为嵌入式资源,则无法更改。相反,如果将其标记为内容,则可以随时更改。 - Riccardo

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