Выпуск .exe файла из входной строки в виде кода - PullRequest
1 голос
/ 02 апреля 2019

У меня есть вопрос.Как освободить файл .exe из string input?

Я хочу скомпилировать в exe Hello World C# пример.Вот мой код:

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 ошибок, которые выглядят так:

enter image description here

Я полагаю, что это что-то вроде отображения этой функции на c# язык.Любые идеи, что я делаю не так?

РЕДАКТИРОВАТЬ:

code массив выглядит так:

enter image description here

1 Ответ

3 голосов
/ 02 апреля 2019

CodeDomProvider.CreateAssemblyFromSource ожидает, что каждая строка в массиве будет источником файл - вы предоставляете одну строку на элемент.

Другими словами, вам не нужно звонить на Split, чтобы начать с. Просто используйте:

var code = new[] { input };
...