/// <summary> /// When multiple VisualStudio instances are found it uses the supplied logger to print information about found instances. Then waits for console input to select one. /// </summary> /// <param name="visualStudioInstances"></param> /// <returns></returns> public VisualStudioInstance SelectVisualStudioInstance(VisualStudioInstance[] visualStudioInstances) { if (visualStudioInstances.Length == 1) { return(visualStudioInstances[0]); } _logger.Warning("Multiple installs of MSBuild detected please select one:"); for (int i = 0; i < visualStudioInstances.Length; i++) { _logger.Warning($"Instance {i + 1}"); _logger.Warning($" Name: {visualStudioInstances[i].Name}"); _logger.Warning($" Version: {visualStudioInstances[i].Version}"); _logger.Warning($" MSBuild Path: {visualStudioInstances[i].MSBuildPath}"); } while (true) { var userResponse = Console.ReadLine(); if (int.TryParse(userResponse, out int instanceNumber) && instanceNumber > 0 && instanceNumber <= visualStudioInstances.Length) { return(visualStudioInstances[instanceNumber - 1]); } _logger.Info("Input not accepted, try again."); } }
private async Task <IEnumerable <ArgumentSyntax> > CalculateArguments(ReferenceLocation location) { IEnumerable <SyntaxNode> nodes = await CalculateInvocationSyntaxNodes(location); if (!nodes.Any()) { _logger.Warning("Did not find and invocation node."); return(new ArgumentSyntax[0]); } if (nodes.Count() > 1) { _logger.Debug("Got multiple invocation nodes using only the last!"); } return(CalculateArguments(nodes.Last())); }