Exemple #1
0
        protected override IEnumerable <string> GetSolutionCompletionResults(InvokeMSBuildParameters parameters)
        {
            try
            {
                var tempProjectFile      = SolutionHelper.CreateTempMetaproj(parameters);
                var temProjectParameters = new InvokeMSBuildParameters
                {
                    DetailedSummary    = parameters.DetailedSummary,
                    MaxCpuCount        = parameters.MaxCpuCount,
                    NodeReuse          = parameters.NodeReuse,
                    Project            = tempProjectFile,
                    Properties         = parameters.Properties,
                    Target             = parameters.Target,
                    ToolsVersion       = parameters.ToolsVersion,
                    Verbosity          = parameters.Verbosity,
                    WarningsAsErrors   = parameters.WarningsAsErrors,
                    WarningsAsMessages = parameters.WarningsAsMessages,
                };

                return(GetProjectCompletionResults(temProjectParameters));
            }
            catch
            {
                return(Enumerable.Empty <string>());
            }
        }
Exemple #2
0
        protected override IEnumerable <string> GetProjectCompletionResults(InvokeMSBuildParameters parameters)
        {
            var msbuildHelper = Factory.InvokeInstance.CreateMSBuildHelper();

            msbuildHelper.Parameters = parameters;
            return(msbuildHelper.GetTargets());
        }
 protected abstract IEnumerable <string> GetSolutionCompletionResults(InvokeMSBuildParameters parameters);
        public IEnumerable <CompletionResult> CompleteArgument(
            string commandName,
            string parameterName,
            string wordToComplete,
            CommandAst commandAst,
            IDictionary fakeBoundParameters)
        {
            var property                = GetParameter <Hashtable>(fakeBoundParameters, nameof(InvokeMSBuild.Property));
            var toolsVersion            = GetParameter <string>(fakeBoundParameters, nameof(InvokeMSBuild.ToolsVersion));
            var projectPath             = GetParameter <string>(fakeBoundParameters, nameof(InvokeMSBuild.Project));
            var ignoreProjectExtensions = GetParameter <string[]>(fakeBoundParameters, nameof(InvokeMSBuild.IgnoreProjectExtensions));
            var target        = GetParameter <string[]>(fakeBoundParameters, nameof(InvokeMSBuild.Target));
            var configuration = GetParameter <string>(fakeBoundParameters, nameof(InvokeMSBuild.Configuration));
            var platform      = GetParameter <string>(fakeBoundParameters, nameof(InvokeMSBuild.Platform));

            var properties = property?.Cast <DictionaryEntry>().ToDictionary(x => x.Key.ToString(), x => x.Value.ToString(), StringComparer.OrdinalIgnoreCase);

            properties = properties ?? new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            if (!string.IsNullOrEmpty(configuration))
            {
                properties[nameof(InvokeMSBuild.Configuration)] = configuration;
            }

            if (!string.IsNullOrEmpty(platform))
            {
                properties[nameof(InvokeMSBuild.Platform)] = platform;
            }

            if (string.IsNullOrEmpty(toolsVersion))
            {
                toolsVersion = InvokeMSBuildParameters.DefaultToolsVersion;
            }

            var sessionState = new SessionState();
            var projects     = string.IsNullOrEmpty(projectPath)
                ? new[] { sessionState.Path.CurrentFileSystemLocation.Path }
                : new[] { Path.Combine(sessionState.Path.CurrentFileSystemLocation.Path, projectPath) };
            var projectFile = MSBuildApp.ProcessProjectSwitch(projects, ignoreProjectExtensions, Directory.GetFiles);

            var parameters = new InvokeMSBuildParameters
            {
                Properties   = properties,
                ToolsVersion = toolsVersion,
                Project      = projectFile,
                Target       = target
            };

            var completionResults = FileUtilities.IsSolutionFilename(projectFile)
                ? GetSolutionCompletionResults(parameters)
                : GetProjectCompletionResults(parameters);

            if (!string.IsNullOrEmpty(wordToComplete))
            {
                completionResults = completionResults.Where(x => x.StartsWith(wordToComplete, StringComparison.InvariantCultureIgnoreCase));
            }

            return(completionResults
                   .OrderBy(x => x)
                   .Select(x => new CompletionResult(EscapeIfRequired(x), x, CompletionResultType.ParameterValue, "tool tip"))
                   .ToArray());
        }
Exemple #5
0
        protected override IEnumerable <string> GetSolutionCompletionResults(InvokeMSBuildParameters parameters)
        {
            var solution = SolutionFile.Parse(parameters.Project);

            return(solution.SolutionConfigurations.Select(x => x.PlatformName).Distinct());
        }
Exemple #6
0
 protected override IEnumerable <string> GetProjectCompletionResults(InvokeMSBuildParameters parameters)
 {
     return(DefaultProjectValues);
 }
 public static string CreateTempMetaproj(InvokeMSBuildParameters parameters)
 {
     return(CreateTempMetaproj(parameters.Project, parameters.Properties, parameters.ToolsVersion));
 }