public static Assembly compile_CodeSnippet(this string codeSnipptet, bool generateDebugSymbols) { //Note we can't use the precompiled engines here since there is an issue of the resolution of this code dependencies var csharpCompiler = new CSharp_FastCompiler(); csharpCompiler.generateDebugSymbols= generateDebugSymbols; var compileProcess = new System.Threading.AutoResetEvent(false); //csharpCompiler.compileSourceCode(pathToFileToCompile.contents()); csharpCompiler.compileSnippet(codeSnipptet); csharpCompiler.onCompileFail = () => compileProcess.Set(); csharpCompiler.onCompileOK = () => compileProcess.Set(); compileProcess.WaitOne(); var assembly = csharpCompiler.assembly(); return assembly; }
public void loadH2Script(string scriptToLoad) { O2Thread.mtaThread(() => { if (scriptToLoad.fileName().starts(this.typeName())) { PublicDI.log.error("We can execute the current type of we will get a recursive load :)"); return; } currentScript = scriptToLoad; statusLabel.set_Text("loading script: {0}".format(scriptToLoad.fileName())); csharpCompiler = new CSharp_FastCompiler(); csharpCompiler.onAstFail = ()=>{ showError("Ast creation failed", csharpCompiler.AstErrors); csharpCompiler_onAstFail.invoke(); }; csharpCompiler.onAstOK = ()=>{ showInfo("Ast creation Ok"); csharpCompiler_onAstOK.invoke(); }; csharpCompiler.onCompileFail = ()=>{ showError("Compilation failed", csharpCompiler.CompilationErrors); csharpCompiler_onCompileFail.invoke(); }; csharpCompiler.onCompileOK = () => { showInfo("Compilation Ok: Executing 1st method"); csharpCompiler_onCompileOK.invoke(); executeCompiledCode(); }; var sourceCode = ""; PublicDI.CurrentScript = scriptToLoad; csharpCompiler.SourceCodeFile = scriptToLoad; if (scriptToLoad.extension(".h2")) sourceCode = H2.load(scriptToLoad).SourceCode; if (scriptToLoad.extension(".o2") || scriptToLoad.extension(".cs")) sourceCode = scriptToLoad.contents(); if (sourceCode.valid()) csharpCompiler.compileSnippet(sourceCode); else statusLabel.set_Text("Non supported file").textColor(this, Color.Red); }); }