11

我用 C# 编写了一个项目,该项目使用了大量图像、Milk 模型和 openGL,我想将所有内容打包到一个 exe 中,以便将其上传到我的网站。现在我得到了一个依赖于其他文件(如 jpgs 等)的 exe。我尝试过使用 ILMerge,但无法正常工作。有没有更简单的解决方案?谢谢。

4

5 回答 5

8

您可以将所有文件/图像作为Embedded Resources放入 exe 中。

请参阅如何使用 Visual C# 嵌入和访问资源(此链接当前为 404s)

于 2012-08-08T10:28:10.800 回答
6

将其添加为嵌入式资源。

在 Visual Studio 中:

  1. 转到解决方案资源管理器,
  2. 右击图片,
  3. 转到构建操作:选择嵌入式资源。

您将在 exe 中拥有该图像。稍后您可以在运行应用程序时使用反射并获取图像。

========= 从应用程序获取嵌入式图像 =========

首先解决第一个问题:通过将图像作为嵌入资源。

第二个问题:使用反射访问图像:

private void Form1_Load(System.Object sender, System.EventArgs e)
{
    System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
    Stream myStream = myAssembly.GetManifestResourceStream("EmbeddingExample.image1.bmp");
    Bitmap image = new Bitmap(myStream);

    this.ClientSize = new Size(image.Width, image.Height);

    PictureBox pb = new PictureBox();
    pb.Image = image;
    pb.Dock = DockStyle.Fill;
    this.Controls.Add(pb);
}

从这里借来的源代码:

于 2012-08-08T10:35:55.480 回答
3

ilmerge 仅用于将 .net CLR 二进制文件合并在一起,通常用于将库捆绑到您的主可执行文件中。

对于艺术资产之类的东西,您希望将它们作为资源嵌入到您的应用程序中。从资源中,您可以获得一个流,让您可以像在文件中一样处理数据。

有关嵌入资源的信息,请参阅此 MSDN 文章:http: //support.microsoft.com/kb/319292

于 2012-08-08T10:28:14.617 回答
2

当您在属性中将图像添加到项目时,您可以将其设置为嵌入式资源,然后它将被添加到二进制文件(dll 或 exe)中

于 2012-08-08T10:28:41.643 回答
1

我更愿意为资源文件创建一个附属程序集。http://msdn.microsoft.com/en-us/library/21a15yht%28v=vs.71%29.aspx

于 2012-08-08T10:31:27.850 回答