/// <summary> /// Compiles the program in memory and returns either the generated assembly or the errors. /// </summary> /// <param name="outputType">Defines the type of assembly to generate</param> /// <param name="assemblyName">Defines the name of the assembly to generate.</param> /// <param name="assemblyVersion">Defines the version of the assembly.</param> /// <param name="assemblyCopyright">Defines the copyright of the assembly.</param> /// <param name="releaseMode">Defines whether the compiler must build in release mode or debug mode.</param> /// <returns>Returns a <seealso cref="CompilerResult"/>.</returns> private CompilerResult Build(BaZicCompilerOutputType outputType, string assemblyName, string assemblyVersion, string assemblyCopyright, bool releaseMode) { LoadAssemblies(); if (_releaseModeRuntime == null) { _releaseModeRuntime = new CompiledProgramRunner(this, Program, _assemblySandbox); } return(_releaseModeRuntime.Build(outputType, assemblyName, assemblyVersion, assemblyCopyright, releaseMode)); }
/// <summary> /// Should be called when the object is being disposed. /// </summary> /// <param name="disposing">Was Dispose() called or did we get here from the finalizer?</param> private void OnDispose(bool disposing) { if (disposing) { if (!IsDisposed) { if (State == BaZicInterpreterState.Running || State == BaZicInterpreterState.Idle || (_mainInterpreterTask != null && _mainInterpreterTask.Status == TaskStatus.Running)) { Stop(true); } FreePauseModeWaiter(); _mainInterpreterTask?.Dispose(); _stateChangedHistory.Clear(); _releaseModeRuntime = null; DebugInfos = null; } } IsDisposed = true; }