public override Compilation CreateSubmission(Script script) { Compilation previousSubmission = null; if (script.Previous != null) { previousSubmission = script.Previous.GetCompilation(); } var diagnostics = DiagnosticBag.GetInstance(); var references = script.GetReferencesForCompilation(MessageProvider.Instance, diagnostics); // TODO: report diagnostics diagnostics.Free(); var parseOptions = script.Options.IsInteractive ? s_defaultInteractive : s_defaultScript; var tree = SyntaxFactory.ParseSyntaxTree(script.Code, parseOptions, script.Options.Path); string assemblyName, submissionTypeName; script.Builder.GenerateSubmissionId(out assemblyName, out submissionTypeName); var compilation = CSharpCompilation.CreateSubmission( assemblyName, tree, references, new CSharpCompilationOptions( outputKind: OutputKind.DynamicallyLinkedLibrary, mainTypeName: null, scriptClassName: submissionTypeName, usings: script.Options.Namespaces, optimizationLevel: OptimizationLevel.Debug, // TODO checkOverflow: false, // TODO allowUnsafe: true, // TODO platform: Platform.AnyCpu, warningLevel: 4, xmlReferenceResolver: null, // don't support XML file references in interactive (permissions & doc comment includes) sourceReferenceResolver: SourceFileResolver.Default, metadataReferenceResolver: script.Options.MetadataResolver, assemblyIdentityComparer: DesktopAssemblyIdentityComparer.Default ), previousSubmission, script.ReturnType, script.GlobalsType ); return compilation; }