public static void Main() { IServiceProvider serviceProvider = new ApplicationManager(null); IAssemblyManager assemblyManager = (IAssemblyManager)serviceProvider.GetService(typeof(IAssemblyManager)); IAssembly assembly = assemblyManager.LoadFile(typeof(CodeModelExample).Module.FullyQualifiedName); Console.WriteLine("Assembly: " + assembly.ToString()); foreach (IModule module in assembly.Modules) { Console.WriteLine("Module: " + module.Name); foreach (ITypeDeclaration typeDeclaration in module.Types) { Console.WriteLine("Type: " + typeDeclaration.Namespace + "." + typeDeclaration.Name); foreach (IMethodDeclaration methodDeclaration in typeDeclaration.Methods) { Console.WriteLine("Method: " + methodDeclaration); IMethodBody methodBody = methodDeclaration.Body as IMethodBody; if (methodBody != null) { foreach (IInstruction instruction in methodBody.Instructions) { Console.Write("L" + instruction.Offset.ToString("X4", CultureInfo.InvariantCulture)); Console.Write(": "); Console.Write(InstructionTable.GetInstructionName(instruction.Code)); if (instruction.Value != null) { Console.Write(" "); if (instruction.Value is string) { Console.Write("\""); } Console.Write(instruction.Value.ToString()); if (instruction.Value is string) { Console.Write("\""); } } Console.WriteLine(); } } } } } assemblyManager.Unload(assembly); }
private void ProcessCommandLineArguments() { CommandLineManager commandLineManger = new CommandLineManager(); if (commandLineManger.IsArgumentPresent("assemblyListFile")) { string fileName = commandLineManger.GetArgument("assemblyListFile"); if (false == File.Exists(fileName)) { MessageBox.Show(String.Format("Could not find file {0}", fileName)); return; } AssemblyListFile file = new AssemblyListFile(fileName); string[] assembliesToLoad = file.Assemblies; if (file.RemoveExisitingAssemblies) { // Remove all exisiting assemblies for (int i = assemblyManager.Assemblies.Count - 1; i >= 0; i--) { assemblyManager.Unload(assemblyManager.Assemblies[i]); } } foreach (string assemblyFile in assembliesToLoad) { assemblyManager.LoadFile(assemblyFile); } if (file.AutomaticallyResolveReferences) { ResolveAllReferences(file.SupressResolveUI); } } if (commandLineManger.IsArgumentPresent("RegisterAssemblyListFileType")) { DoRegisterFileTypeAssociation(); } if (commandLineManger.IsArgumentPresent("UnregisterAssemblyListFileType")) { DoUnregisterFileTypeAssociation(); } }