public virtual List <ProjectResource> Save(bool saveProject = true)
        {
            var list = new List <ProjectResource> ();

            if (saveProject)
            {
                var contents  = SaveProject();
                var timestamp = contents != project_file_contents ? default(DateTimeOffset?) :
                                ItemGroupList.SelectMany(ig => ig).Where(i => i.Timestamp != null).Select(i => (DateTimeOffset)i.Timestamp).Max();
                list.Add(new ProjectResource()
                {
                    Timestamp = timestamp,
                    Path      = ProjectFilePath,
                    Content   = project_file_contents = contents,
                    Encoding  = System.Text.Encoding.UTF8,
                });
            }

            if (Packages.Any())
            {
                list.Add(new ProjectResource()
                {
                    Path    = "packages.config",
                    Content = "<packages>\n" + string.Concat(Packages.Select(p => string.Format("  <package id='{0}' version='{1}' targetFramework='{2}' />\n",
                                                                                                p.Id, p.Version, p.TargetFramework))) + "</packages>"
                });
            }

            foreach (var ig in ItemGroupList)
            {
                list.AddRange(ig.Select(s => new ProjectResource()
                {
                    Timestamp     = s.Timestamp,
                    Path          = s.Include(),
                    Content       = s.TextContent == null ? null : s.TextContent(),
                    BinaryContent = s.BinaryContent == null ? null : s.BinaryContent(),
                    Encoding      = s.Encoding,
                    Deleted       = s.Deleted,
                    Attributes    = s.Attributes,
                }));
            }

            foreach (var import in Imports)
            {
                list.Add(new ProjectResource()
                {
                    Path     = import.Project(),
                    Content  = import.TextContent == null ? null : import.TextContent(),
                    Encoding = System.Text.Encoding.UTF8,
                });
            }

            return(list);
        }
 public BuildItem GetItem(string include)
 {
     return(ItemGroupList.SelectMany(g => g).FirstOrDefault(i => i.Include().Equals(include, StringComparison.OrdinalIgnoreCase)));
 }