public void Save(MetadataPackage package, string path, ProjectType projectType) { string projectFolder = Path.GetDirectoryName(path); if (!Directory.Exists(projectFolder)) { Directory.CreateDirectory(projectFolder); } _settings = new CfProjectSettings() { Type = projectType, Version = package.GetType().Assembly.GetName().Version.ToString(), MdInternalsVersion = this.GetType().Assembly.GetName().Version.ToString(), PackageType = package.GetType().FullName }; package.MetadataObjects.AsParallel().ForAll(m => { string relativePath = GetRelativePath(m, projectType); FileInfo fileInfo = null; if (m.ImageRow.BodyType == ImageRowTypes.CompressedImage) { fileInfo = UnloadImage(projectFolder, relativePath, m, projectType); } else { fileInfo = UnloadElement(projectFolder, relativePath, m, projectType); } lock (this._settings) { this._settings.Files.Add(fileInfo); } }); var settings = new XmlWriterSettings() { Indent = true }; using (XmlWriter xmlWriter = XmlWriter.Create(path, settings)) { System.Windows.Markup.XamlWriter.Save(_settings, xmlWriter); } }
public IEnumerable <NestedPackageInfo> GetRegisteredPackages(MetadataPackage branchPackage) { yield return(new NestedPackageInfo(branchPackage, string.Empty)); var packageType = branchPackage.GetType(); if (metadataPaths.ContainsKey(packageType)) { foreach (var packagePath in metadataPaths[packageType]) { foreach (var nestedPackage in GetPackages(branchPackage, packagePath)) { yield return(nestedPackage); } } } }