Пример #1
0
        public void Save()
        {
            this.Manifest.ReferencedModules.Items.Clear();
            packageFiles.Clear();

            // Update Referenced Modules
            Assembly coreAssembly = Assembly.GetAssembly(typeof(PComponent));

            foreach (var c in this.Components.Concat(this.ServerComponents))
            {
                string name = c.GetType().Assembly.FullName;

                if (c is PFunction pFunc)
                {
                    name = pFunc.FunctionInfo.DeclaringType.Assembly.FullName;
                }

                if (name != coreAssembly.FullName)
                {
                    this.Manifest.ReferencedModules.Items.SafeAdd(name);
                }
            }

            // Set Manifest
            packageFiles.Add(
                new ManifestPackageFile(this.Manifest));

            // Set Screens
            foreach (var screen in Screens)
            {
                packageFiles.Add(
                    new ScreenPackageFile(screen));
            }

            // Set Templates
            foreach (var template in Templates)
            {
                packageFiles.Add(
                    new TemplatePackageFile(template));
            }

            // Set Components
            packageFiles.Add(
                new ComponentPackageFile(this.Components));

            // * Server Components
            packageFiles.Add(
                new ServerComponentPackageFile(this.ServerComponents));

            // * Expressions
            packageFiles.Add(
                new ComponentExpressionPackageFile(
                    this.Components.Concat(this.ServerComponents)));

            // * ComponentRenderers
            packageFiles.Add(
                new ComponentRendererPackageFile(
                    this.Components.Concat(this.ServerComponents)));

            // Set Renderers
            foreach (var page in Screens.Cast <PPage>().Concat(Templates))
            {
                packageFiles.Add(
                    new PageRendererPackageFile(page.GetRenderer()));
            }

            // Save To File
            using (var fs = File.Open(FileName, FileMode.OpenOrCreate))
                Package.Packaging(fs, packageFiles);
        }