如何将所有文件编译为一个exe?

时间:2012-08-08 10:26:04

标签: c# ilmerge

我在C#中编写了一个项目,它使用了很多图像,Milk模型和openGL,我希望将所有内容打包在一个exe中,这样我就可以将它上传到我的网站了。 现在我得到了一个依赖于jpgs等其他文件的exe。 我尝试过使用ILMerge但无法使用它。有更简单的解决方案吗? 感谢。

5 个答案:

答案 0 :(得分:8)

您可以将所有文件/图像作为嵌入式资源放入exe中。

参见 How to embed and access resources by using Visual C# (此链接目前为404s)

答案 1 :(得分:6)

将其添加为嵌入式资源。

Visual Studio内部:

  1. 转到解决方案资源管理器,
  2. 右键单击图像,
  3. 转到构建操作:选择嵌入式资源。
  4. 你将在exe内部拥有该图像。稍后您可以使用Reflection并在运行应用程序时获取图像。

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

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

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

    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);
    }
    

    来自here的借用源代码:

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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