public virtual async Task RunLoopWithSeed(ScriptContext scriptContext) { await HandleScriptErrors(async() => await RunFirstScript(scriptContext)); await RunLoop(); }
public virtual ScriptCompilationContext <TReturn> CreateCompilationContext <TReturn, THost>(ScriptContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } _logger.Info($"Current runtime is '{_scriptEnvironment.PlatformIdentifier}'."); RuntimeDependency[] runtimeDependencies = GetRuntimeDependencies(context); var encoding = context.Code.Encoding ?? Encoding.UTF8; // encoding is required when emitting debug information var scriptOptions = CreateScriptOptions(context, runtimeDependencies.ToList()) .WithFileEncoding(encoding); var loadedAssembliesMap = CreateLoadedAssembliesMap(); var scriptDependenciesMap = CreateScriptDependenciesMap(runtimeDependencies); scriptOptions = AddScriptReferences(scriptOptions, loadedAssembliesMap, scriptDependenciesMap); LoadNativeAssets(runtimeDependencies); AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => MapUnresolvedAssemblyToRuntimeLibrary(scriptDependenciesMap, loadedAssembliesMap, args); string code = GetScriptCode(context); var loader = new InteractiveAssemblyLoader(); var script = CSharpScript.Create <TReturn>(code, scriptOptions, typeof(THost), loader); SetOptimizationLevel(context, script); EvaluateDiagnostics(script); return(new ScriptCompilationContext <TReturn>(script, context.Code, loader, scriptOptions)); }