// BatchMergeXaml has a *ton* of parameters, making defining it programmatically difficult. // To get around that, this provides a system where you can dump its parameters from a binlog // to a file and then read those parameters. To do that, save a build to a binlog (msbuild /bl // via command line or via the Project System Tools extension for VS at // https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ProjectSystemTools), // then open it up using the binlog viewer (https://msbuildlog.com/), search for "$task BatchMergeXaml", // click on "Parameters", Ctrl+C to copy the whole thing, paste that to a text file, and then point this // at that text file. private static BatchMergeXaml GetBatchMergeXamlTaskFromParameters(string parametersFilePath) { BatchMergeXaml task = new BatchMergeXaml(); string[] fileLines = File.ReadAllLines(parametersFilePath); for (int i = 0; i < fileLines.Length; i++) { if (fileLines[i].StartsWith(" OutputDirectory")) { task.OutputDirectory = fileLines[i].Split('=')[1].Trim(); } else if (fileLines[i].StartsWith(" PagesFilteredBy")) { task.PagesFilteredBy = fileLines[i].Split('=')[1].Trim(); } else if (fileLines[i].StartsWith(" PostfixForGeneratedFile")) { task.PostfixForGeneratedFile = fileLines[i].Split('=')[1].Trim(); } else if (fileLines[i].StartsWith(" TlogReadFilesOutputPath")) { task.TlogReadFilesOutputPath = fileLines[i].Split('=')[1].Trim(); } else if (fileLines[i].StartsWith(" TlogWriteFilesOutputPath")) { task.TlogWriteFilesOutputPath = fileLines[i].Split('=')[1].Trim(); } else if (fileLines[i] == " RS1Pages") { task.RS1Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " RS2Pages") { task.RS2Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " RS3Pages") { task.RS3Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " RS4Pages") { task.RS4Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " RS5Pages") { task.RS5Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " N19H1Pages") { task.N19H1Pages = GetTaskItemsFromLines(fileLines, ref i); } else if (fileLines[i] == " T21H1Pages") { task.T21H1Pages = GetTaskItemsFromLines(fileLines, ref i); } } return(task); }
private static void TestBatchMergeXaml(string projectRoot) { BatchMergeXaml test = GetBatchMergeXamlTaskFromParameters(Path.Combine(Environment.GetEnvironmentVariable("LOCALAPPDATA"), "Temp", "BatchMergeXamlParams.txt")); test.Execute(); }