AsmSpy.DgmlExport.Visualize C# (CSharp) Method

Visualize() public method

public Visualize ( ) : void
return void
        public void Visualize()
        {
            var nodes = new StringBuilder();

            foreach (var assemblyReference in _Result.Assemblies.Values)
            {
                nodes.AppendFormat("<Node Id=\"{0}\" Label=\"{1}\" Category=\"Assembly\" />\n",
                    assemblyReference.AssemblyName.FullName, assemblyReference.AssemblyName.Name);
            }

            var links = new StringBuilder();
            foreach (var assemblyReference in _Result.Assemblies.Values)
            {
                foreach (var referenceTo in assemblyReference.References)
                {
                    links.AppendFormat("<Link Source=\"{0}\" Target=\"{1}\" Category=\"Reference\" />\n",
                        assemblyReference.AssemblyName.FullName, referenceTo.AssemblyName.FullName);
                }
            }

            var dgml = new StringBuilder();
            dgml.Append("<?xml version=\"1.0\" encoding=\"utf - 8\"?>\n");
            dgml.Append("<DirectedGraph Title=\"AsmSpy:References\" xmlns=\"http://schemas.microsoft.com/vs/2009/dgml\">\n");

            dgml.Append("<Nodes>\n");
            dgml.Append(nodes);
            dgml.Append("</Nodes>\n");

            dgml.Append("<Links>\n");
            dgml.Append(links);
            dgml.Append("</Links>\n");

            dgml.Append("<Categories>\n");
            dgml.Append("<Category Id=\"Assembly\"/>\n");
            dgml.Append("<Category Id=\"Reference\"/>\n");
            dgml.Append("</Categories>\n");

            dgml.Append("</DirectedGraph>\n");
            try
            {
                File.WriteAllText(_ExportFilename, dgml.ToString());
                _Logger.LogMessage(string.Format("Exported to file {0}", _ExportFilename));
            }
            catch (System.UnauthorizedAccessException uae)
            {
                _Logger.LogError(string.Format("Could not write file {0} due to error {1}", _ExportFilename, uae.Message));
            }
            catch (System.IO.DirectoryNotFoundException dnfe)
            {
                _Logger.LogError(string.Format("Could not write file {0} due to error {1}", _ExportFilename, dnfe.Message));
            }
        }

Usage Example

Exemplo n.º 1
0
        static void Main(string[] args)
        {
            CommandLineApplication commandLineApplication = new CommandLineApplication(throwOnUnexpectedArg: false);
            CommandArgument directory = commandLineApplication.Argument("directory", "The directory to search for assemblies");
            CommandOption dgmlExport = commandLineApplication.Option("-dg|--dgml <filename>", "Export to a dgml file", CommandOptionType.SingleValue);
            CommandOption nonsystem = commandLineApplication.Option("-n|--nonsystem", "List system assemblies", CommandOptionType.NoValue);
            CommandOption all = commandLineApplication.Option("-a|--all", "List all assemblies and references.", CommandOptionType.NoValue);
            CommandOption noconsole = commandLineApplication.Option("-nc|--noconsole", "Do not show references on console.", CommandOptionType.NoValue);
            CommandOption silent = commandLineApplication.Option("-s|--silent", "Do not show any message, only warnings and errors will be shown.", CommandOptionType.NoValue);

            commandLineApplication.HelpOption("-? | -h | --help");
            commandLineApplication.OnExecute(() =>
            {
                var consoleLogger = new ConsoleLogger(!silent.HasValue());

                var directoryPath = directory.Value;
                if (!Directory.Exists(directoryPath))
                {
                    consoleLogger.LogMessage(string.Format("Directory: '{0}' does not exist.", directoryPath));
                    return -1;
                }

                var onlyConflicts = !all.HasValue();
                var skipSystem = nonsystem.HasValue();

                IDependencyAnalyzer analyzer = new DependencyAnalyzer() { DirectoryInfo = new DirectoryInfo(directoryPath) };

                consoleLogger.LogMessage(string.Format("Check assemblies in: {0}", analyzer.DirectoryInfo));

                var result = analyzer.Analyze(consoleLogger);

                if (!noconsole.HasValue())
                {
                    IDependencyVisualizer visualizer = new ConsoleVisualizer(result) { SkipSystem = skipSystem, OnlyConflicts = onlyConflicts };
                    visualizer.Visualize();
                }

                if (dgmlExport.HasValue())
                {
                    IDependencyVisualizer export = new DgmlExport(result, string.IsNullOrWhiteSpace(dgmlExport.Value()) ? Path.Combine(analyzer.DirectoryInfo.FullName, "references.dgml") : dgmlExport.Value(), consoleLogger);
                    export.Visualize();
                }

                return 0;
            });
            try
            {
                if (args == null || args.Length == 0)
                    commandLineApplication.ShowHelp();
                else
                    commandLineApplication.Execute(args);
            }
            catch (CommandParsingException cpe)
            {
                Console.WriteLine(cpe.Message);
                commandLineApplication.ShowHelp();
            }
        }
All Usage Examples Of AsmSpy.DgmlExport::Visualize