示例#1
0
        public static IWebHostBuilder ConstructWebHostBuilder(
            StartupOptions options,
            IServiceCollection serviceCollection)
        {
            using var _ = Log.OnEnterAndExit();

            // FIX: (ConstructWebHostBuilder) dispose me
            var disposables = new CompositeDisposable
            {
                StartToolLogging(options)
            };

            var httpPort = GetFreePort(options);

            options.HttpPort = httpPort;
            var probingSettings = HttpProbingSettings.Create(options.HttpPort.PortNumber);


            var webHost = new WebHostBuilder()
                          .UseKestrel()
                          .UseDotNetInteractiveHttpApi(true, httpPort, probingSettings, serviceCollection)
                          .UseUrls(probingSettings.AddressList.Select(a => a.AbsoluteUri).ToArray())
                          .UseStartup <Startup>();


            return(webHost);
        private static IKernel CreateKernel(
            string defaultKernelName,
            FrontendEnvironment frontendEnvironment,
            StartupOptions startupOptions,
            HttpProbingSettings httpProbingSettings)
        {
            var compositeKernel = new CompositeKernel();

            compositeKernel.FrontendEnvironment = frontendEnvironment;

            compositeKernel.Add(
                new CSharpKernel()
                .UseDefaultFormatting()
                .UseNugetDirective()
                .UseKernelHelpers()
                .UseJupyterHelpers()
                .UseWho()
                .UseXplot()
                .UseMathAndLaTeX());

            compositeKernel.Add(
                new FSharpKernel()
                .UseDefaultFormatting()
                .UseNugetDirective()
                .UseKernelHelpers()
                .UseWho()
                .UseDefaultNamespaces()
                .UseXplot()
                .UseMathAndLaTeX());

            compositeKernel.Add(
                new PowerShellKernel()
                .UseJupyterHelpers()
                .UseXplot(),
                new[] { "#!pwsh" });

            compositeKernel.Add(
                new JavaScriptKernel(),
                new[] { "#!js" });

            compositeKernel.Add(
                new HtmlKernel());

            var kernel = compositeKernel
                         .UseDefaultMagicCommands()
                         .UseLog()
                         .UseAbout()
                         .UseHttpApi(startupOptions, httpProbingSettings);

            SetUpFormatters(frontendEnvironment);


            kernel.DefaultKernelName = defaultKernelName;
            var enableHttp = new SubmitCode("#!enable-http", compositeKernel.Name);

            enableHttp.PublishInternalEvents();
            compositeKernel.DeferCommand(enableHttp);
            return(kernel);
        }