运行时如何在浏览器中运行代码

时间:2019-09-07 20:20:56

标签: c# asp.net-mvc asp.net-core blazor

我一直在这里使用文档https://support.microsoft.com/en-gb/help/304655/how-to-programmatically-compile-code-using-c-compiler 我想更多地了解编译器,我想在自己的站点上托管一个简单的文本编辑器,我可以使用它运行脚本代码,例如

需要该程序才能打印出Console.WriteLine(“ Hello World”);

如果打印出Hello World以外的任何内容,则该程序将出错。

我一直在查看在运行时运行.net代码的Microsoft代码,但这两者都迫使它创建一个exe,我希望结果像在文本框中显示.net一样。

我想我必须做些什么,如何运行exe并使用该过程返回结果,请记住,这是在mvc应用程序内部。

或者他们的任何酷小子都能在这里节省我的时间。

private void Compiler(string code)
{

  CSharpCodeProvider codeProvider = new CSharpCodeProvider();
  ICodeCompiler icc = codeProvider.CreateCompiler();
  string Output = "Out.exe";
  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, code);

        if (results.Errors.Count > 0)
        {

            foreach (CompilerError CompErr in results.Errors)
            {
                CompilerError error = new CompilerError();
                error.Line = CompErr.Line;
                error.ErrorNumber = CompErr.ErrorNumber;
                error.ErrorText = CompErr.ErrorText;                   
            }
        }
        else
        {
            //Successful Compile

            CodeResult result = new CodeResult();
            result.Message = "Success";


        }
}

一个人如何捕获以上内容并返回,以及一个人如何增加对其他语言(如python或vb.net)的支持

这是炽烈的人可能对我有利吗?

我想提供.net小提琴https://dotnetfiddle.net

1 个答案:

答案 0 :(得分:1)

Suchiman / Robin Sue在this nifty blazor projectlive demo)中集成了Monaco编辑器和浏览器内C#编译器