public abstract void RunPostStep(List <ModuleDef> Modules, ModuleDef CoreModule);
 public static void PostProcessStepAddNuGet(XmlDocument doc, XmlNamespaceManager nsmgr, ModuleDef md)
 {
     if (md.NuGetPackages.Count == 0)
     {
         return;
     }
     foreach (string Pack in md.NuGetPackages)
     {
         //  string data = "<Import Project=\"packages\\WinPixEventRuntime.1.0.190604001\\build\\WinPixEventRuntime.targets\" Condition=\"Exists('packages\\WinPixEventRuntime.1.0.190604001\\build\\WinPixEventRuntime.targets')\" />";
         XmlNodeList cl = doc.SelectNodes("//a:ImportGroup", nsmgr);
         //  foreach (XmlNode nn in cl)
         {
             XmlNode      nn    = cl[cl.Count - 1];
             XmlNode      value = doc.CreateNode(XmlNodeType.Element, "Import", doc.DocumentElement.NamespaceURI);
             XmlAttribute A     = doc.CreateAttribute("Project");
             A.Value = "packages\\WinPixEventRuntime.1.0.190604001\\build\\WinPixEventRuntime.targets";// Condition=\"Exists('packages\\WinPixEventRuntime.1.0.190604001\\build\\WinPixEventRuntime.targets')\";
             value.Attributes.Append(A);
             XmlAttribute B = doc.CreateAttribute("Condition");
             B.Value = "Exists('packages\\WinPixEventRuntime.1.0.190604001\\build\\WinPixEventRuntime.targets')";
             value.Attributes.Append(B);
             //  value.InnerText = "true";//<IncludeInUnityFile>true</IncludeInUnityFile>
             nn.AppendChild(value);
         }
     }
 }
 public abstract void GenerateList(List <ModuleDef> Modules, ModuleDef CoreModule, List <BuildConfig> buildConfigs);
        public static void ProcessExpections(XmlDocument doc, XmlNamespaceManager nsmgr, ModuleDef md)
        {
            List <string> Excludes = new List <string>();

            foreach (string path in md.UnityBuildExcludedFolders)
            {
                Excludes.AddRange(FileUtils.GetFilePaths(ModuleDefManager.GetSourcePath() + "\\" + md.ModuleName + "\\" + path, "*.cpp", true));
                Console.WriteLine("Excluded " + path + " from unity build for module " + md.ModuleName);
            }

            XmlNodeList cl = doc.SelectNodes("//a:ItemGroup", nsmgr);

            foreach (string s in Excludes)
            {
                string parsed  = StringUtils.SanitizePathToDoubleBack(s);
                string RelPath = parsed.Replace(StringUtils.SanitizePathToDoubleBack(Directory.GetCurrentDirectory()), "..");
                //..\Source\Core\AI\Core\AIBase.cpp
                XmlNodeList cc = doc.SelectNodes("//a:ClCompile[*]", nsmgr);
                foreach (XmlNode nn in cc)
                {
                    if (nn.Attributes.Count > 0)
                    {
                        if (nn.Attributes[0].Value == RelPath)
                        {
                            foreach (XmlNode child in nn.ChildNodes)
                            {
                                if (child.Name == "IncludeInUnityFile")
                                {
                                    child.InnerText = "false";
                                }
                            }
                        }
                    }
                }
            }
        }