Как построить онлайн-компилятор кода и показать выходные данные для любого языка?
1) здесь я использую "объект codedomprovider" для получения поставщик для кода на C++, т. е. давая "codeProvider объект codedomprovider = объект codedomprovider.CreateProvider("cpp");", и пытается скомпилировать код для результата, но я получаю следующее исключение:
- Исключение типа "система".NotImplementedException' произошло в CppCodeProvider.dll, но не был обработан в пользовательском коде
Дополнительная информация: метод или операция не реализованы."
2) Когда я пытаюсь сделать то же самое с кодом C#, предоставляя провайдеру для C# в "CodeDomProvider" как CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("Csharp");" его компилируют и даже генерируют выходные данные.
3) я использую visual studio 2015, и dll, то есть "CppCodeProvider", отображается в ссылке, и я добавил ссылку также в проект.
4) и "c++,cpp,vb,c#,Jscript" все эти языки отображаются в списке поддерживаемых языков "CodeDomProvider", но он работает только для CSharp, а не для каких-либо других языков.
может ли кто-нибудь сказать мне,как я могу скомпилировать этот код на любом языке программирования(c,c++, java,vb,Jscript или csharp)и получить результат, как у нас есть онлайн-редактор кода с компиляторами?
Что я уже пробовал:
общественного недействительными compile_Click(объект отправителя, EventArgs в электронной)
{
//Очистка списка.............
lstCompilerOutput.Предметы.Четкий();
нажать = кнопку + 1;
string Output = "check102" + click + ".exe";
//ПОСТАВЩИК КОДА
CodeProvider объект codedomprovider = объект codedomprovider.CreateProvider("cpp");
Строковый исходный файл;
if (codeProvider.FileExtension[0] == '.')
{
sourceFile = Ceditor.Через свойство innerText;
}
еще
{
sourceFile = Ceditor.Через свойство innerText;
}
Система.граф CodeDOM.Компилятор.Параметры CompilerParameters = новые параметры CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
параметры.GenerateExecutable = истина;
параметры.OutputAssembly = Выход;
CompilerResults result = codeProvider.CompileAssemblyFromFile(параметры, Ceditor.InnerHtml);//"Ceditor.InnerHtml"-получение исходного кода из Texrarea из браузера
ProcessStartInfo greeterProcess = новый ProcessStartInfo();
greeterProcess.Имя Файла = Вывод;
greeterProcess.RedirectStandardInput = true;
greeterProcess.UseShellExecute = false;
greeterProcess.RedirectStandardOutput = true;
если (результат.Ошибки.Count > 0)
{
// Отображение ошибок компиляции.
lstCompilerOutput.Text = "ошибки, возникшие при построении" +
Вывод + " в " + результат.PathToAssembly + ": \r\n\n";
по каждому элементу (компилятора ошибка CE в результате.Ошибки)
lstCompilerOutput.Предметы.Добавить(ce.ToString() + "\r\n");
}
еще
{
lstCompilerOutput.Текст = "Источник" + вывод + "встроенный" +
результат.PathToAssembly + " без ошибок.";
using (Process exeProcess = процесс.Начало(greeterProcess))
{
строка line = exeProcess.StandardOutput.С readline();
lstCompilerOutput.Предметы.Добавить(строка);
lstCompilerOutput.ForeColor = Цвет.Синий;
lstCompilerOutput.Items.Add("Успех");
//exeProcess.WaitForExit();
}
}
}