public override bool Execute()
        {
            var log = new MSBuildLogger(Log);

            // item -> string
            var all   = AllProjects?.Select(e => e.ItemSpec).ToArray() ?? Array.Empty <string>();
            var valid = ValidProjects?.Select(e => e.ItemSpec).ToArray() ?? Array.Empty <string>();

            // log inputs
            BuildTasksUtility.LogInputParam(log, nameof(AllProjects), all);
            BuildTasksUtility.LogInputParam(log, nameof(ValidProjects), valid);

            // Log warnings for invalid projects
            foreach (var path in all.Except(valid, PathUtility.GetStringComparerBasedOnOS()))
            {
                var message = MSBuildRestoreUtility.GetWarningForUnsupportedProject(path);
                log.Log(message);
            }

            return(true);
        }