所以我已经编写了一种解释性编程语言,除了一件事之外,一切都很顺利:我想制作一个“编译器”,将用户的代码嵌入到解释器的副本中,这样所有用户都需要do是双击嵌入其中的代码的可执行文件,它将运行。
所以问题是:如何将文件嵌入已编译的可执行文件中?我可以在编译之前访问可执行文件,但嵌入过程必须在之后发生。
我更希望解决方案是在C#中,但我很绝望,可以使用C ++或VB.NET,甚至是批处理文件
答案 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);