The Magical Magikarp Ответов: 2

Как программно скомпилировать приложение C# windows forms из richtextbox? С#


Я пытаюсь создать программу типа Visual Studio, которая позволяет вводить код в RichTextBox. После нажатия клавиши F5(Compile) он будет компилировать код. Как пользователь будет компилировать указанный код? Я знаю, как использовать компилятор ConsoleApplication, но не компилирую Windows Forms :(

Может ли кто-нибудь преобразовать этот код для компиляции WinForms вместо ConsoleApp? Мне нужно, чтобы он был написан на языке Си# :)

Что я уже пробовал:

CSharpCodeProvider codeProvider = new CSharpCodeProvider();
        ICodeCompiler icc = codeProvider.CreateCompiler();
        string Output = "MCCACOut.exe";
            Button ButtonObject = (Button)sender;

            richTextBox201.Text = "";
            System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
            //Make sure we generate an EXE, not a DLL
            parameters.GenerateExecutable = true;
            parameters.OutputAssembly = Output;
            CompilerResults results = icc.CompileAssemblyFromSource(parameters, richTextBox301.Text);

            if (results.Errors.Count > 0)
            {
                richTextBox201.ForeColor = Color.Red;
                foreach (CompilerError CompErr in results.Errors)
                {
                    richTextBox201.Text = richTextBox201.Text +
                                "Line number " + CompErr.Line +
                                ", Error Number: " + CompErr.ErrorNumber +
                                ", '" + CompErr.ErrorText + ";" +
                                Environment.NewLine + Environment.NewLine;
                }
            }
            else
            {
                //Successful Compile
                richTextBox201.ForeColor = Color.Blue;
                richTextBox201.Text = "Success!";
                //If we clicked run then launch our EXE
                Process.Start(Output);
            }

2 Ответов

Рейтинг:
1

RickZeeland

Вы можете попробовать это: Компиляция кода во время выполнения[^]
И не забудьте добавить ссылку на Система.Окна.Формы.


The Magical Magikarp

На самом деле это не так :( я пытался внедрить его в свою программу, но он не реализовался. Компилятор будет реализовывать, но он продолжает находить ошибки в примере кода :..(

RickZeeland

Странно, этот пример работает, я протестировал его на Windows 10 с VS2017 и .Объем 4.7 ???

The Magical Magikarp

Я использую VS-2013, это повлияет на что-нибудь? Я использую Visual Studio 2013 потому что более поздние версии замерзают как сумасшедшие :(

RickZeeland

Он должен работать, так как код датируется 2005 годом, но, возможно, у вас есть и другие проблемы, такие как неполный или поврежденный .NET framework, я обновлю решение с помощью некоторых советов.