void LoadElement(XmlElement node, IReadOnlyFileSystem fileSystem) { switch (node.Name) { case "Options": ProjectTemplateImpl.WarnObsoleteNode(node, "Options are no longer supported, use properties instead."); break; case "CreateActions": LoadCreateActions(node); break; case "PreCreateActions": LoadPreCreateActions(node); break; case "ProjectItems": LoadProjectItems(node); break; case "Files": LoadFiles(node, fileSystem); break; case "Imports": LoadImports(node); break; case "PropertyGroup": LoadPropertyGroup(node); break; case "Include": TemplateLoadException.AssertAttributeExists(node, "src"); FileName includeFileName = FileName.Create(node.GetAttribute("src")); try { XmlDocument doc = new XmlDocument(); using (var stream = fileSystem.OpenRead(includeFileName)) { doc.Load(stream); } doc.DocumentElement.SetAttribute("fileName", includeFileName); var fileSystemForInclude = new ReadOnlyChrootFileSystem(fileSystem, includeFileName.GetParentDirectory()); if (doc.DocumentElement.Name == "Include") { LoadElementChildren(doc.DocumentElement, fileSystemForInclude); } else { LoadElement(doc.DocumentElement, fileSystemForInclude); } } catch (XmlException ex) { throw new TemplateLoadException("Error loading include file " + includeFileName, ex); } break; default: throw new TemplateLoadException("Unknown node in <Project>: " + node.Name); } }
public object BuildItem(BuildItemArgs args) { var fileSystem = GetFileSystem(args); var templates = new List<TemplateBase>(); var xpt = fileSystem.GetFiles(DirectoryName.Create("."), "*.xpt", DirectorySearchOptions.IncludeSubdirectories); var xft = fileSystem.GetFiles(DirectoryName.Create("."), "*.xft", DirectorySearchOptions.IncludeSubdirectories); foreach (var fileName in xpt.Concat(xft)) { using (var stream = fileSystem.OpenRead(fileName)) { var relFileSystem = new ReadOnlyChrootFileSystem(fileSystem, fileName.GetParentDirectory()); templates.Add(SD.Templates.LoadTemplate(stream, relFileSystem)); } } if (templates.Count == 1) return templates[0]; else return new MultipleItems(templates); }
public object BuildItem(BuildItemArgs args) { var fileSystem = GetFileSystem(args); var templates = new List <TemplateBase>(); var xpt = fileSystem.GetFiles(DirectoryName.Create("."), "*.xpt", DirectorySearchOptions.IncludeSubdirectories); var xft = fileSystem.GetFiles(DirectoryName.Create("."), "*.xft", DirectorySearchOptions.IncludeSubdirectories); foreach (var fileName in xpt.Concat(xft)) { using (var stream = fileSystem.OpenRead(fileName)) { var relFileSystem = new ReadOnlyChrootFileSystem(fileSystem, fileName.GetParentDirectory()); templates.Add(SD.Templates.LoadTemplate(stream, relFileSystem)); } } if (templates.Count == 1) { return(templates[0]); } else { return(new MultipleItems(templates)); } }