public override ServerResponse Execute(ServerRequest request, CancellationToken cancellationToken) { if (!TryParseArguments(request, out var parsed)) { return(new RejectedServerResponse()); } var exitCode = 0; var commandArgs = parsed.args.ToArray(); var outputWriter = new StringWriter(); var errorWriter = new StringWriter(); var checker = new DefaultExtensionDependencyChecker(Loader, outputWriter, errorWriter); var app = new Application(cancellationToken, Loader, checker, AssemblyReferenceProvider, outputWriter, errorWriter); exitCode = app.Execute(commandArgs); var output = outputWriter.ToString(); var error = errorWriter.ToString(); outputWriter.Dispose(); errorWriter.Dispose(); // This will no-op if server logging is not enabled. ServerLogger.Log(output); ServerLogger.Log(error); return(new CompletedServerResponse(exitCode, utf8output: false, output, error)); }
private static int RunApplication(string[] args) { DebugMode.HandleDebugSwitch(ref args); var cancel = new CancellationTokenSource(); Console.CancelKeyPress += (sender, e) => { cancel.Cancel(); }; var outputWriter = new StringWriter(); var errorWriter = new StringWriter(); // Prevent shadow copying. var loader = new DefaultExtensionAssemblyLoader(baseDirectory: null); var checker = new DefaultExtensionDependencyChecker(loader, outputWriter, errorWriter); var application = new Application( cancel.Token, loader, checker, (path, properties) => MetadataReference.CreateFromFile(path, properties), outputWriter, errorWriter); var result = application.Execute(args); var output = outputWriter.ToString(); var error = errorWriter.ToString(); outputWriter.Dispose(); errorWriter.Dispose(); Console.Write(output); Console.Error.Write(error); // This will no-op if server logging is not enabled. ServerLogger.Log(output); ServerLogger.Log(error); return(result); }