using System; using System.IO; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Windows.Forms; namespace Coverage { class Program { static void Main(String[] args) { try { // Get the assemblies from which to list the coverage String pathExecutable = Path.GetDirectoryName(Application.ExecutablePath); String[] filesAssemblies = Directory.GetFiles(pathExecutable, "*.dll"); // Create the output coverage file String fileOutput = Path.Combine(pathExecutable, "coverage.txt"); StreamWriter writerOutput = File.CreateText(fileOutput); // Write the header Assembly assemblyCommon = Assembly.LoadFile(Path.Combine(pathExecutable, "ManagedITK.Common.dll")); const String sep = "========================================"; String header = "Coverage: ManagedITK {0}: {1}"; header = sep + Environment.NewLine + header + Environment.NewLine + sep + Environment.NewLine; String version = assemblyCommon.GetName().Version.ToString(); String date = DateTime.Today.ToString("yyyy/MM/dd"); writerOutput.WriteLine(String.Format(header, version, date)); // Loop through each file foreach (String fileAssembly in filesAssemblies) { // Write assembly name String name = Path.GetFileNameWithoutExtension(fileAssembly); writerOutput.WriteLine(name); Console.WriteLine("Processing " + name); // Collate the list of exported types Assembly assembly = Assembly.LoadFile(fileAssembly); List types = new List(); foreach (Type type in assembly.GetExportedTypes()) if (!type.Name.Contains("_") && type.Name.StartsWith("itk")) types.Add(type.Name); // Sort list types.Sort(); // Write list foreach (String type in types) writerOutput.WriteLine("\t" + type); writerOutput.WriteLine(""); } // Write coverage writerOutput.Flush(); writerOutput.Dispose(); writerOutput = null; } catch (Exception ex) { Console.WriteLine(ex); } } } }