Ejemplo n.º 1
0
 private BuildClient CreateClient(
     RequestLanguage?language = null,
     CompileFunc compileFunc  = null,
     CompileOnServerFunc compileOnServerFunc = null)
 {
     language ??= RequestLanguage.CSharpCompile;
     compileFunc ??= delegate { return(0); };
     compileOnServerFunc ??= delegate { throw new InvalidOperationException(); };
     return(new BuildClient(language.Value, compileFunc, compileOnServerFunc));
 }
Ejemplo n.º 2
0
        internal static BuildClient CreateBuildClient(
            RequestLanguage language,
            ICompilerServerLogger logger)
        {
            // Create a client to run the build.  Infinite timeout is used to account for the
            // case where these tests are run under extreme load.  In high load scenarios the
            // client will correctly drop down to a local compilation if the server doesn't respond
            // fast enough.
            CompileOnServerFunc compileOnServerFunc = (request, pipeName, cancellationToken) =>
                                                      BuildServerConnection.RunServerBuildRequestAsync(
                request,
                pipeName,
                timeoutOverride: Timeout.Infinite,
                tryCreateServerFunc: (_, _) => false,
                logger,
                cancellationToken);

            var compileFunc = GetCompileFunc(language);

            return(new BuildClient(language, compileFunc, compileOnServerFunc));
        }
Ejemplo n.º 3
0
 internal BuildClient(RequestLanguage language, CompileFunc compileFunc, CompileOnServerFunc compileOnServerFunc)
 {
     _language            = language;
     _compileFunc         = compileFunc;
     _compileOnServerFunc = compileOnServerFunc;
 }
Ejemplo n.º 4
0
        internal static int Run(IEnumerable <string> arguments, RequestLanguage language, CompileFunc compileFunc, CompileOnServerFunc compileOnServerFunc)
        {
            var sdkDir = GetSystemSdkDirectory();

            if (RuntimeHostInfo.IsCoreClrRuntime)
            {
                // Register encodings for console
                // https://github.com/dotnet/roslyn/issues/10785
                System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
            }

            var client            = new BuildClient(language, compileFunc, compileOnServerFunc);
            var clientDir         = GetClientDirectory();
            var workingDir        = Directory.GetCurrentDirectory();
            var tempDir           = BuildServerConnection.GetTempPath(workingDir);
            var buildPaths        = new BuildPaths(clientDir: clientDir, workingDir: workingDir, sdkDir: sdkDir, tempDir: tempDir);
            var originalArguments = GetCommandLineArgs(arguments);

            return(client.RunCompilation(originalArguments, buildPaths).ExitCode);
        }