public void TryRun(string targetName, SubProject fixtureProject) { if (fixtureProject.Targets.Contains(targetName)) { fixtureProject.Targets[targetName].Execute(); } }
/// <summary> /// This method is only meant to be used by the <see cref="Project"/> /// class and <see cref="NAnt.Core.Tasks.IncludeTask"/>. /// </summary> internal void InitializeProjectDocument(XmlDocument doc) { // load line and column number information into position map LocationMap.Add(doc); SubProject subProject = null; if (doc.DocumentElement.HasAttribute(ProjectNameAttribute)) { string subProjectName = doc.DocumentElement.GetAttribute(ProjectNameAttribute); subProject = new SubProject(subProjectName); this.SubProjects.Add(subProject); } // initialize targets first foreach (XmlNode childNode in doc.DocumentElement.ChildNodes) { // skip non-nant namespace elements and special elements like // comments, pis, text, etc. if (childNode.LocalName.Equals(TargetXml) && childNode.NamespaceURI.Equals(NamespaceManager.LookupNamespace("nant"))) { Target target = new Target(); target.Project = this; target.Parent = this; target.NamespaceManager = NamespaceManager; target.Initialize(childNode); Targets.Add(target); if (subProject != null) subProject.Targets.Add(target); } } // initialize datatypes and execute global tasks foreach (XmlNode childNode in doc.DocumentElement.ChildNodes) { // skip targets that were handled above, skip non-nant namespace // elements and special elements like comments, pis, text, etc. if (!(childNode.NodeType == XmlNodeType.Element) || !childNode.NamespaceURI.Equals(NamespaceManager.LookupNamespace("nant")) || childNode.LocalName.Equals(TargetXml)) { continue; } if (TypeFactory.TaskBuilders.Contains(childNode.Name)) { // create task instance Task task = CreateTask(childNode); task.Parent = this; // execute task task.Execute(); } else if (TypeFactory.DataTypeBuilders.Contains(childNode.Name)) { // we are an datatype declaration DataTypeBase dataType = CreateDataTypeBase(childNode); Log(Level.Debug, "Adding a {0} reference with id '{1}'.", childNode.Name, dataType.ID); if (! DataTypeReferences.Contains(dataType.ID)) { DataTypeReferences.Add(dataType.ID, dataType); } else { DataTypeReferences[dataType.ID] = dataType; // overwrite with the new reference. } } else { throw new BuildException(string.Format(CultureInfo.InvariantCulture, ResourceUtils.GetString("NA1071"), childNode.Name), LocationMap.GetLocation(childNode)); } } }