从输入字符串中释放 .exe 文件作为代码
Releasing .exe file from input string as code
我有一个问题。如何从 string input
释放 .exe
文件?
我想编译成exe
Hello 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 };
我有一个问题。如何从 string input
释放 .exe
文件?
我想编译成exe
Hello 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 };