/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/Server/VBCSCompiler/BuildProtocolUtil.cs
74 строки
3 KB
Jared Parsons
Fix the project layout (#61547)
09 июн 2022, 20:42
Не верифицирован
09 июн 2022, 20:42
b6d630f
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Runtime.InteropServices; using System.Threading; using Microsoft.CodeAnalysis.CommandLine; namespace Microsoft.CodeAnalysis.CompilerServer { internal static class BuildProtocolUtil { internal static RunRequest GetRunRequest(BuildRequest req) { string? currentDirectory; string? libDirectory; string? tempDirectory; string[] arguments = GetCommandLineArguments(req, out currentDirectory, out tempDirectory, out libDirectory); string language = ""; switch (req.Language) { case RequestLanguage.CSharpCompile: language = LanguageNames.CSharp; break; case RequestLanguage.VisualBasicCompile: language = LanguageNames.VisualBasic; break; } return new RunRequest(req.RequestId, language, currentDirectory, tempDirectory, libDirectory, arguments); } internal static string[] GetCommandLineArguments(BuildRequest req, out string? currentDirectory, out string? tempDirectory, out string? libDirectory) { currentDirectory = null; libDirectory = null; tempDirectory = null; List<string> commandLineArguments = new List<string>(); foreach (BuildRequest.Argument arg in req.Arguments) { if (arg.ArgumentId == BuildProtocolConstants.ArgumentId.CurrentDirectory) { currentDirectory = arg.Value; } else if (arg.ArgumentId == BuildProtocolConstants.ArgumentId.TempDirectory) { tempDirectory = arg.Value; } else if (arg.ArgumentId == BuildProtocolConstants.ArgumentId.LibEnvVariable) { libDirectory = arg.Value; } else if (arg.ArgumentId == BuildProtocolConstants.ArgumentId.CommandLineArgument) { if (arg.Value is object) { int argIndex = arg.ArgumentIndex; while (argIndex >= commandLineArguments.Count) commandLineArguments.Add(""); commandLineArguments[argIndex] = arg.Value; } } } return commandLineArguments.ToArray(); } } }