| File: CombineLinkerXmlFiles.cs | Web Access |
| Project: src\runtime\src\tools\illink\src\ILLink.Tasks\ILLink.Tasks.csproj (ILLink.Tasks) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Xml; using System.Xml.Linq; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; namespace ILLink.Tasks { /// <summary> /// Combines multiple ILLink xml files into a single xml file. /// </summary> public class CombineLinkerXmlFiles : Task { /// <summary> /// The individual ILLink xml files that will be combined into one. /// </summary> [Required] public ITaskItem[] LinkerXmlFiles { get; set; } /// <summary> /// The path to the file to generate. /// </summary> [Required] public string CombinedLinkerXmlFile { get; set; } public override bool Execute() { var combined = new XElement("linker"); foreach (var linkerXmlFile in LinkerXmlFiles) { XDocument subFile = XDocument.Load(linkerXmlFile.ItemSpec); foreach (var element in subFile.Root.Elements()) { combined.Add(element); } } var xdoc = new XDocument(combined); XmlWriterSettings xws = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; using (XmlWriter xw = XmlWriter.Create(CombinedLinkerXmlFile, xws)) { xdoc.Save(xw); } return true; } } }