使用C#将文件嵌入外部exe

时间:2017-01-29 16:17:14

标签: c# file embed executable interpreter

所以我已经编写了一种解释性编程语言,除了一件事之外,一切都很顺利:我想制作一个“编译器”,将用户的代码嵌入到解释器的副本中,这样所有用户都需要do是双击嵌入其中的代码的可执行文件,它将运行。

所以问题是:如何将文件嵌入已编译的可执行文件中?我可以在编译之前访问可执行文件,但嵌入过程必须在之后发生。

我更希望解决方案是在C#中,但我很绝望,可以使用C ++或VB.NET,甚至是批处理文件

1 个答案:

答案 0 :(得分:0)

因此,经过一些激烈的谷歌搜索后,我找到了一个名为Mono.Cecil的库,它完全符合我的要求。我可以使用以下代码将文件注入可执行文件:

string fileName = "Interpreter.exe"; // The file which will have toInject injected in it
string outputName = "Compiled.exe";  // The output file to compile
string toInject = "program.txt";     // The file we will be injecting into fileName
string resourceName = "program.txt"; // The name of the file once it's inside fileName

var module = ModuleDefinition.ReadModule(filename);

var file = new EmbeddedResource(
    resourceName,
    ManifestResourceAttributes.Private,
    File.ReadAllBytes(toInject));

module.Resources.Add(file);

module.Write(outputName);