/// <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); }