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); }