Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }