internal static IHelperTask AddToPreBuildTask(
            this ITaskHelper helper,
            string targetName,
            bool isTarget         = true,
            string parentTaskName = "")
        {
            if (string.IsNullOrWhiteSpace(targetName))
            {
                throw new ArgumentNullException(nameof(targetName));
            }

            if (!isTarget && string.IsNullOrWhiteSpace(parentTaskName))
            {
                throw new ArgumentNullException(nameof(parentTaskName));
            }

            var newTaskName = isTarget ? targetName : $"{parentTaskName}-{targetName}";
            var parentTask  = isTarget ? helper.GetPreBuildTask() : helper.AddToPreBuildTask(parentTaskName);
            var newTask     = helper.GetPreBuildTask(newTaskName, isTarget);

            helper.AddTaskDependency(parentTask, newTask);

            return(newTask);
        }
        internal static IHelperTask GetBuildTask(
            this ITaskHelper helper,
            string targetName = "All",
            bool isTarget     = true)
        {
            if (helper == null)
            {
                return(null);
            }

            var buildTask = helper.GetTask($"{BuildTaskName}-{targetName}", isTarget, TargetCategory, BuildTaskName);

            if (isTarget)
            {
                var preBuildTask = helper.GetPreBuildTask(targetName);
                helper.AddTaskDependency(buildTask, preBuildTask);
            }

            return(buildTask);
        }