从输入字符串中释放 .exe 文件作为代码

Releasing .exe file from input string as code

我有一个问题。如何从 string input 释放 .exe 文件?

我想编译成exeHello WorldC#例子。这是我的代码:

var code = input.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

var provider = CodeDomProvider.CreateProvider("CSharp");
string exeName = string.Format("test.exe", Environment.CurrentDirectory);
var parameters = new CompilerParameters
{
    GenerateExecutable = true,
    OutputAssembly = exeName,
    GenerateInMemory = false,
    TreatWarningsAsErrors = false
};
parameters.ReferencedAssemblies.Add("System.dll");

var compilerResults = provider.CompileAssemblyFromSource(parameters, code);

if (compilerResults.Errors.Count > 0)
    //Error

else
    //Succes, file saved int Debug folder (exe file)

从上面的代码中,我想得到 code 作为 string,然后我创建 string[] 数组(每个数组的记录是下一行代码)。然后,我想将该 exe 文件保存到 Debug 文件夹中。

但是现在,从 compilerResults.Errors 我得到 32 如下所示的错误:

我相信这与将此函数映射到 c# 语言有关。任何想法,我做错了什么?

编辑:

code 数组如下所示:

CodeDomProvider.CreateAssemblyFromSource 期望数组中的每个字符串都是一个源 file - 你提供一个 line元素.

换句话说,您不需要先拨打 Split。只需使用:

var code = new[] { input };