我想知道是否有可能在不生成 exe 或任何类型的其他文件的情况下编译和运行存储的代码,基本上从内存中运行文件。
基本上,主应用程序将存储一些代码(可能会更改的代码),并且需要编译代码并执行它。无需创建任何文件。
创建文件、运行程序,然后删除文件不是一种选择。编译后的代码需要从内存中运行。
代码示例、指针或几乎任何东西都是受欢迎的:)
最佳答案
using (Microsoft.CSharp.CSharpCodeProvider foo =
new Microsoft.CSharp.CSharpCodeProvider())
{
var res = foo.CompileAssemblyFromSource(
new System.CodeDom.Compiler.CompilerParameters()
{
GenerateInMemory = true
},
"public class FooClass { public string Execute() { return \"output!\";}}"
);
var type = res.CompiledAssembly.GetType("FooClass");
var obj = Activator.CreateInstance(type);
var output = type.GetMethod("Execute").Invoke(obj, new object[] { });
}
这会根据包含的源代码字符串编译一个简单的类,然后实例化该类并在其上反射调用一个函数。
关于c# - 编译运行动态代码,不生成EXE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188882/