public void Autopackage( FileFilter fileFilter, Execution execution, ModuleInfo module, string rootPath, string platform, List <string> temporaryFiles) { var definitions = module.GetDefinitionsRecursively(platform).ToArray(); var loadedProjects = new List <LoadedDefinitionInfo>(); foreach (var definition in definitions) { Console.WriteLine("Loading: " + definition.Name); loadedProjects.Add( this.m_ProjectLoader.Load( platform, module, definition)); } var serviceManager = new ServiceManager(platform); List <Service> services; serviceManager.SetRootDefinitions(module.GetDefinitions()); var enabledServices = execution.EnabledServices.ToArray(); var disabledServices = execution.DisabledServices.ToArray(); foreach (var service in enabledServices) { serviceManager.EnableService(service); } foreach (var service in disabledServices) { serviceManager.DisableService(service); } if (execution.DebugServiceResolution) { serviceManager.EnableDebugInformation(); } services = serviceManager.CalculateDependencyGraph(loadedProjects.Select(x => x.Project).ToList()); foreach (var service in services) { if (service.ServiceName != null) { Console.WriteLine("Enabled service: " + service.FullName); } } var packagePaths = module.Packages .Select(x => new DirectoryInfo(System.IO.Path.Combine(module.Path, x.Folder)).FullName) .ToArray(); foreach (var definition in definitions) { if (definition.SkipAutopackage) { Console.WriteLine("Skipping: " + definition.Name); continue; } var definitionNormalizedPath = new FileInfo(definition.AbsolutePath).FullName; if (packagePaths.Any(definitionNormalizedPath.StartsWith)) { Console.WriteLine("Skipping: " + definition.Name + " (part of another package)"); continue; } switch (definition.Type) { case "External": Console.WriteLine("Packaging: " + definition.Name); this.AutomaticallyPackageExternalProject(definitions, services, fileFilter, rootPath, platform, definition, temporaryFiles); break; case "Include": Console.WriteLine("Packaging: " + definition.Name); this.AutomaticallyPackageIncludeProject(definitions, services, fileFilter, rootPath, platform, definition); break; case "Content": Console.WriteLine("Content project definition skipped: " + definition.Name); break; default: Console.WriteLine("Packaging: " + definition.Name); this.AutomaticallyPackageNormalProject(definitions, services, fileFilter, rootPath, platform, definition, temporaryFiles); break; } } // If there is no Module.xml in the source mappings already, then copy the current module. var filterDictionary = fileFilter.ToDictionarySafe( k => k.Key, v => v.Value, (dict, d) => Console.WriteLine("WARNING: More than one file maps to " + d.Key)); if (!filterDictionary.ContainsValue("Build/Module.xml")) { fileFilter.AddManualMapping(Path.Combine(module.Path, "Build", "Module.xml"), "Build/Module.xml"); } }