public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler) { var buildPaths = new BuildPaths(ClientDirectory, request.CurrentDirectory, SdkDirectory, request.TempDirectory); switch (request.Language) { case LanguageNames.CSharp: compiler = new CSharpCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); case LanguageNames.VisualBasic: compiler = new VisualBasicCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); default: compiler = null; return(false); } }
public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler) { var buildPaths = new BuildPaths(ClientDirectory, request.CurrentDirectory, SdkDirectory, request.TempDirectory); switch (request.Language) { case LanguageNames.CSharp: compiler = new CSharpCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return true; case LanguageNames.VisualBasic: compiler = new VisualBasicCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return true; default: compiler = null; return false; } }
public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler) { switch (request.Language) { case LanguageNames.CSharp: compiler = new CSharpCompilerServer( this, args: request.Arguments, clientDirectory: ClientDirectory, baseDirectory: request.CurrentDirectory, sdkDirectory: SdkDirectory, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); case LanguageNames.VisualBasic: compiler = new VisualBasicCompilerServer( this, args: request.Arguments, clientDirectory: ClientDirectory, baseDirectory: request.CurrentDirectory, sdkDirectory: SdkDirectory, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); default: compiler = null; return(false); } }
public bool TryCreateCompiler(RunRequest request, BuildPaths buildPaths, [NotNullWhen(true)] out CommonCompiler?compiler) { switch (request.Language) { case LanguageNames.CSharp: compiler = new CSharpCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); case LanguageNames.VisualBasic: compiler = new VisualBasicCompilerServer( AssemblyReferenceProvider, args: request.Arguments, buildPaths: buildPaths, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return(true); default: compiler = null; return(false); } }
public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler) { switch (request.Language) { case LanguageNames.CSharp: compiler = new CSharpCompilerServer( this, args: request.Arguments, clientDirectory: ClientDirectory, baseDirectory: request.CurrentDirectory, sdkDirectory: SdkDirectory, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return true; case LanguageNames.VisualBasic: compiler = new VisualBasicCompilerServer( this, args: request.Arguments, clientDirectory: ClientDirectory, baseDirectory: request.CurrentDirectory, sdkDirectory: SdkDirectory, libDirectory: request.LibDirectory, analyzerLoader: AnalyzerAssemblyLoader); return true; default: compiler = null; return false; } }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { Log($"CurrentDirectory = '{request.CurrentDirectory}'"); Log($"LIB = '{request.LibDirectory}'"); for (int i = 0; i < request.Arguments.Length; ++i) { Log($"Argument[{i}] = '{request.Arguments[i]}'"); } CommonCompiler compiler; if (!TryCreateCompiler(request, out compiler)) { // We can't do anything with a request we don't know about. Log($"Got request with id '{request.Language}'"); return(new RejectedBuildResponse()); } bool utf8output = compiler.Arguments.Utf8Output; if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences)) { return(new AnalyzerInconsistencyBuildResponse()); } Log($"****Running {request.Language} compiler..."); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n"); return(new CompletedBuildResponse(returnCode, utf8output, output.ToString())); }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { Logger.Log($@" Run Compilation CurrentDirectory = '{request.WorkingDirectory} LIB = '{request.LibDirectory}'"); // Compiler server must be provided with a valid current directory in order to correctly // resolve files in the compilation if (string.IsNullOrEmpty(request.WorkingDirectory)) { return(new RejectedBuildResponse("Missing temp directory")); } // Compiler server must be provided with a valid temporary directory in order to correctly // isolate signing between compilations. if (string.IsNullOrEmpty(request.TempDirectory)) { return(new RejectedBuildResponse("Missing temp directory")); } var buildPaths = new BuildPaths(ClientDirectory, request.WorkingDirectory, SdkDirectory, request.TempDirectory); CommonCompiler?compiler; if (!TryCreateCompiler(request, buildPaths, out compiler)) { return(new RejectedBuildResponse($"Cannot create compiler for language id {request.Language}")); } bool utf8output = compiler.Arguments.Utf8Output; if (!CheckAnalyzers(request.WorkingDirectory, compiler.Arguments.AnalyzerReferences)) { return(new AnalyzerInconsistencyBuildResponse()); } Logger.Log($"Begin {request.Language} compiler run"); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); var outputString = output.ToString(); Logger.Log(@$ " End {request.Language} Compilation complete. Return code: {returnCode} Output: {outputString}"); return(new CompletedBuildResponse(returnCode, utf8output, outputString)); }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { Log($"CurrentDirectory = '{request.CurrentDirectory}'"); Log($"LIB = '{request.LibDirectory}'"); for (int i = 0; i < request.Arguments.Length; ++i) { Log($"Argument[{i}] = '{request.Arguments[i]}'"); } // Compiler server must be provided with a valid temporary directory in order to correctly // isolate signing between compilations. if (string.IsNullOrEmpty(request.TempDirectory)) { Log($"Rejecting build due to missing temp directory"); return(new RejectedBuildResponse()); } CommonCompiler compiler; if (!TryCreateCompiler(request, out compiler)) { // We can't do anything with a request we don't know about. Log($"Got request with id '{request.Language}'"); return(new RejectedBuildResponse()); } bool utf8output = compiler.Arguments.Utf8Output; if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences)) { return(new AnalyzerInconsistencyBuildResponse()); } Log($"****Running {request.Language} compiler..."); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n"); return(new CompletedBuildResponse(returnCode, utf8output, output.ToString())); }
/// <summary> /// A request to compile C# files. Unpack the arguments and current directory and invoke /// the compiler, then create a response with the result of compilation. /// </summary> private BuildResponse RunCompile(RunRequest request, Func<RunRequest, CommonCompiler> func, CancellationToken cancellationToken) { _compilerServerHost.Log($"CurrentDirectory = '{request.CurrentDirectory}'"); _compilerServerHost.Log($"LIB = '{request.LibDirectory}'"); for (int i = 0; i < request.Arguments.Length; ++i) { _compilerServerHost.Log($"Argument[{i}] = '{request.Arguments[i]}'"); } var compiler = func(request); bool utf8output = compiler.Arguments.Utf8Output; if (!_compilerServerHost.CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences)) { return new AnalyzerInconsistencyBuildResponse(); } _compilerServerHost.Log($"****Running {request.Language} compiler..."); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); _compilerServerHost.Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n"); return new CompletedBuildResponse(returnCode, utf8output, output.ToString(), ""); }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { Log($"CurrentDirectory = '{request.CurrentDirectory}'"); Log($"LIB = '{request.LibDirectory}'"); for (int i = 0; i < request.Arguments.Length; ++i) { Log($"Argument[{i}] = '{request.Arguments[i]}'"); } // Compiler server must be provided with a valid temporary directory in order to correctly // isolate signing between compilations. if (string.IsNullOrEmpty(request.TempDirectory)) { Log($"Rejecting build due to missing temp directory"); return new RejectedBuildResponse(); } CommonCompiler compiler; if (!TryCreateCompiler(request, out compiler)) { // We can't do anything with a request we don't know about. Log($"Got request with id '{request.Language}'"); return new RejectedBuildResponse(); } bool utf8output = compiler.Arguments.Utf8Output; if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences)) { return new AnalyzerInconsistencyBuildResponse(); } Log($"****Running {request.Language} compiler..."); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n"); return new CompletedBuildResponse(returnCode, utf8output, output.ToString()); }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { Log($"CurrentDirectory = '{request.CurrentDirectory}'"); Log($"LIB = '{request.LibDirectory}'"); for (int i = 0; i < request.Arguments.Length; ++i) { Log($"Argument[{i}] = '{request.Arguments[i]}'"); } CommonCompiler compiler; if (!TryCreateCompiler(request, out compiler)) { // We can't do anything with a request we don't know about. Log($"Got request with id '{request.Language}'"); return new RejectedBuildResponse(); } bool utf8output = compiler.Arguments.Utf8Output; if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences)) { return new AnalyzerInconsistencyBuildResponse(); } Log($"****Running {request.Language} compiler..."); TextWriter output = new StringWriter(CultureInfo.InvariantCulture); int returnCode = compiler.Run(output, cancellationToken); Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n"); return new CompletedBuildResponse(returnCode, utf8output, output.ToString(), ""); }
private CommonCompiler CreateBasicCompiler(RunRequest request) { return new VisualBasicCompilerServer( _compilerServerHost, request.Arguments, _clientDirectory, request.CurrentDirectory, _compilerServerHost.GetSdkDirectory(), request.LibDirectory, _compilerServerHost.AnalyzerAssemblyLoader); }
public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken) { return(null); }
public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler) { compiler = null; return(false); }