Пример #1
0
        /// <summary>
        /// Executes a task specified by a string with the specified parameters.
        /// </summary>
        /// <param name="taskTypeName">Name of the task type.</param>
        /// <param name="taskAttributes">The list of Xml attributes with the parameters of the task.</param>
        /// <returns><c>true</c> if the operation succeeds.</returns>
        public bool ExecuteTask(string taskTypeName, IEnumerable <XmlAttribute> taskAttributes)
        {
            var task = this.taskService[taskTypeName];

            var engine = this.DefaultBuildEngine;

            // Todo: check if this is detached, later.
            buildLogger.RegisterLogger(engine);

            var sourceParameter = string.Empty;

            // Todo: put this task generation extra.);
            if (task is Backup)
            {
                // var btask = (Backup)task;

                /*for (int index = 0; index < this.Paths.Count; index++)
                 * {
                 *  var item = this.Paths[index];
                 * }*/
                sourceParameter = "SourceFiles";
            }
            else if (task is Zip)
            {
                sourceParameter = "CompressFiles";
            }

            var proj = engine.CreateNewProject();

            proj.DefaultToolsVersion = "3.5";
            var target = proj.Targets.AddNewTarget("mainTarget");

            var sourceParaIdent = "FilesToZip";
            //var big = proj.AddNewItemGroup();
            var igComp = DefaultTaskComposerBuilder.CreateItemGroupComposer();
            var big    = igComp.GenerateBuildItemGroup(proj, this.Paths, sourceParaIdent);

            var taskComp = DefaultTaskComposerBuilder.CreateTaskComposer(proj, task.GetType(), this.buildLogger);
            var batask   = taskComp.CreateNewTaskOnTarget(target, sourceParaIdent, sourceParameter);

            taskComp.SetParametersOnCreatedTask(taskAttributes);

            var result = proj.Build("mainTarget");
            var str    = PrettyPrintXml(proj.Xml);

            return(result);
        }