在 .exe vb.net 中编译图像

Posted

技术标签:

【中文标题】在 .exe vb.net 中编译图像【英文标题】:Compile image in .exe vb.net 【发布时间】:2015-01-21 15:27:29 【问题描述】:

我想在 vb.net 中制作一个简单的 .exe 应用程序。该应用程序不会安装,只是纯粹在 .exe 文件上运行。

应用程序有一张表格和两张图片。当我在图像上设置选项以构建操作时 - 编译

Unable to open module file 'C:\Users\t3cho\documents\visual studio 2013\Projects\Apps\Apps\Resources\power.png': System Error &H80041feb&   

有没有其他方法可以在不安装或其他文件夹的情况下制作带有图像的 .exe 文件。

【问题讨论】:

这可能是您访问资源的方式。 您正在尝试将图片作为资源嵌入,因此请尝试文件的嵌入式资源选项并使用内置类打开它以进行资源读取。 What are the various “Build action” settings in VS.NET project properties and what do they do? 【参考方案1】:

将图像(和其他类型的资源)包含到应用程序中的最简单方法是右键单击项目,转到“资源”选项卡并在那里添加图像。您可以将其名称更改为例如MyEmbeddedImage 并像这样访问它

Dim img As Image = Properties.Resources.MyEmbeddedImage

Dim img As Image = My.Resources.MyEmbeddedImage

这会自动将Build Action 设置为

注意:这种方法是类型安全的,如果图像丢失,您将在编译时收到错误。

请参阅:My.Resources Object 和 How to: Add or Remove Resources


如果您仍想“手动”嵌入图像,则必须将 Build Action 设置为 Embedded Resource 并按照@Icemanind 的描述访问它。

【讨论】:

【参考方案2】:

是的。它被称为嵌入式资源。将图像的Build Action 设置为Embedded Resource。然后,您可以像这样在运行时获取图像:

Try
    _assembly = [Assembly].GetExecutingAssembly()
    _imageStream =  _assembly.GetManifestResourceStream("MyNameSpace.MyImage.png")
    ' Do something with _imageStream
Catch ex As Exception
    ' Resource not found or something went wrong
End Try

【讨论】:

以上是关于在 .exe vb.net 中编译图像的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 2008 怎么给软件打包?能不能做成一个exe文件?

创建 VB.NET COM DLL

C# 到 VB.Net:为啥转换为 VB 时编译失败?

如何编写 vb.net 代码来编译 C/C++ 程序?

用C#编写的asp.net 和 vb.net编写的asp.net 有性能上的差异吗?

如何利用ILSPY反编译工具重建C#NETWeb源码解决方案