首页 > 解决方案 > C# Compile OutOfMemory 错误,而我正在尝试动态生成要编译的文件操作代码

问题描述

直截了当, 我正在尝试编写一个程序,将一些大文件中的字节封装到可执行文件(.exe)中。然后可以通过执行该 exe 文件重新安装这些文件。

我从最愚蠢的方法开始(动态生成要编译的代码

  1. 将目标文件中的字节数组读入程序。
  2. 动态生成可以稍后编译的代码,这些代码即将初始化并将那些字节数组写入磁盘。(所以是非常难的字节数组初始化代码如:byte[] file = new byte[25, 122, 16, 38, 54, .....]根据文件生成。)
  3. 以编程方式使用 C# 编译器编译这些代码。
  4. 获取输出可执行文件。

这是我生成的代码,例如:

byte[] Fningjpg = new byte[]{ 255,216,255,224,54,26,199,224,135,253,22,79,135,2........very very long]
File.WriteAllBytes(@"ning.jpg",Fningjpg);
Console.WriteLine("Fningjpg bytes length: "+Fningjpg.Length);
Fningjpg= null;
System.GC.Collect();

尽管效率低下,但它在中等大小的文件中运行良好。

在我编译试图封装大文件 (30MB) 的代码时发生OutOfMemory错误,该文件具有非常长的字节数组声明代码。

有没有更好的方法来满足这个要求?谢谢!(我的文件最多只有 100 mb!这个大小的解决方案就足够了!)

标签: c#compiler-errorsout-of-memory

解决方案


推荐阅读