/// ------------------------------------------------------------------------------------ /// <summary> /// Executes the task. /// </summary> /// ------------------------------------------------------------------------------------ protected override void ExecuteTask() { Log(Level.Info, "Processing {0}", Path.GetFileName(Executable)); string manifestFile = Executable + ".manifest"; try { var doc = new XmlDocument { PreserveWhitespace = true }; using (XmlReader reader = new XmlTextReader(manifestFile)) { if (reader.MoveToElement()) { doc.ReadNode(reader); } } // Register all DLLs temporarily using (var creator = new RegFreeCreator(doc)) { foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tRegistering library {0}", Path.GetFileName(fileName)); creator.Register(fileName); } XmlElement root = creator.CreateExeInfo(Executable); foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tProcessing library {0}", Path.GetFileName(fileName)); creator.ProcessTypeLibrary(root, fileName); } foreach (string fragmentName in Fragments.FileNames) { Log(Level.Verbose, "\tAdding fragment {0}", Path.GetFileName(fragmentName)); creator.AddFragment(root, fragmentName); } foreach (string fragmentName in AsIs.FileNames) { Log(Level.Verbose, "\tAdding as-is fragment {0}", Path.GetFileName(fragmentName)); creator.AddAsIs(root, fragmentName); } var settings = new XmlWriterSettings { OmitXmlDeclaration = false, NewLineOnAttributes = false, NewLineChars = Environment.NewLine, Indent = true, IndentChars = "\t" }; using (XmlWriter writer = XmlWriter.Create(manifestFile, settings)) { doc.WriteContentTo(writer); } // Unregister DLLs foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tUnregistering library {0}", Path.GetFileName(fileName)); creator.Unregister(fileName); } } } catch (Exception e) { throw new BuildException("Regfree failed.", Location, e); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Executes the task. /// </summary> /// ------------------------------------------------------------------------------------ protected override void ExecuteTask() { Log(Level.Info, "Processing {0}", Path.GetFileName(Executable)); string manifestFile = Executable + ".manifest"; try { var doc = new XmlDocument { PreserveWhitespace = true }; using (XmlReader reader = new XmlTextReader(manifestFile)) { if (reader.MoveToElement()) doc.ReadNode(reader); } // Register all DLLs temporarily using (var creator = new RegFreeCreator(doc)) { foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tRegistering library {0}", Path.GetFileName(fileName)); creator.Register(fileName); } XmlElement root = creator.CreateExeInfo(Executable); foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tProcessing library {0}", Path.GetFileName(fileName)); creator.ProcessTypeLibrary(root, fileName); } foreach (string fragmentName in Fragments.FileNames) { Log(Level.Verbose, "\tAdding fragment {0}", Path.GetFileName(fragmentName)); creator.AddFragment(root, fragmentName); } foreach (string fragmentName in AsIs.FileNames) { Log(Level.Verbose, "\tAdding as-is fragment {0}", Path.GetFileName(fragmentName)); creator.AddAsIs(root, fragmentName); } var settings = new XmlWriterSettings { OmitXmlDeclaration = false, NewLineOnAttributes = false, NewLineChars = Environment.NewLine, Indent = true, IndentChars = "\t" }; using (XmlWriter writer = XmlWriter.Create(manifestFile, settings)) { doc.WriteContentTo(writer); } // Unregister DLLs foreach (string fileName in Dlls.FileNames) { Log(Level.Verbose, "\tUnregistering library {0}", Path.GetFileName(fileName)); creator.Unregister(fileName); } } } catch (Exception e) { throw new BuildException("Regfree failed.", Location, e); } }