private int WriteAssemblyInfo(IAssembly assembly, ILanguageWriterConfiguration configuration) { ILanguage language = LanguageManager.ActiveLanguage; ITranslator translator = TranslatorManager.CreateDisassembler("Xml", null); int exceptions = 0; using (StreamWriter streamWriter = CreateFile(string.Empty, "AssemblyInfo")) { TextFormatter formatter = new TextFormatter(); try { ILanguageWriter writer = language.GetWriter(formatter, configuration); assembly = translator.TranslateAssembly(assembly, false); writer.WriteAssembly(assembly); foreach (IModule module in assembly.Modules) { IModule visitedModule = translator.TranslateModule(module, false); writer.WriteModule(visitedModule); foreach (IAssemblyReference assemblyReference in module.AssemblyReferences) { IAssemblyReference visitedAssemblyReference = translator.TranslateAssemblyReference(assemblyReference); writer.WriteAssemblyReference(visitedAssemblyReference); } foreach (IModuleReference moduleReference in module.ModuleReferences) { IModuleReference visitedModuleReference = translator.TranslateModuleReference(moduleReference); writer.WriteModuleReference(visitedModuleReference); } } foreach (IResource resource in assembly.Resources) { writer.WriteResource(resource); } } catch (Exception exception) { streamWriter.WriteLine(exception.ToString()); WriteLine(exception.ToString()); exceptions++; } string output = formatter.ToString().Replace("\r\n", "\n").Replace("\n", "\r\n"); streamWriter.WriteLine(output); } return(exceptions); }
public void WriteAssembly(IAssembly assembly) { _writer.WriteAssembly(assembly); _formatter.WriteLine(); foreach (IModule module in assembly.Modules) { _writer.WriteModule(module); foreach (IAssemblyName assemblyName in module.AssemblyReferences) { _writer.WriteAssemblyName(assemblyName); } foreach (IModuleName moduleName in module.ModuleReferences) { _writer.WriteModuleName(moduleName); } } foreach (IResource resource in assembly.Resources) { _writer.WriteResource(resource); } }
public string Decompile(int languageIndex, object o) { if (o == null) { return(String.Empty); } IFormatter formatter = CreateFormatter(this.LanguageManager.Languages[languageIndex].Name); ILanguageWriter writer = this.LanguageManager.Languages[languageIndex].GetWriter(formatter, _langurageWriterConfiguration); ITranslator translator = this.TranslatorManager.CreateDisassembler(null, null); if (o is IMethodDeclaration) { IMethodDeclaration m2; if (IsIL(languageIndex)) { m2 = (IMethodDeclaration)o; } else { m2 = translator.TranslateMethodDeclaration((IMethodDeclaration)o); } writer.WriteMethodDeclaration(m2); } else if (o is IPropertyDeclaration) { IPropertyDeclaration p2 = translator.TranslatePropertyDeclaration((IPropertyDeclaration)o); writer.WritePropertyDeclaration(p2); } else if (o is IFieldDeclaration) { IFieldDeclaration f2 = translator.TranslateFieldDeclaration((IFieldDeclaration)o); writer.WriteFieldDeclaration(f2); } else if (o is ITypeDeclaration) { ITypeDeclaration t2 = translator.TranslateTypeDeclaration((ITypeDeclaration)o, true, false); writer.WriteTypeDeclaration(t2); } else if (o is IEventDeclaration) { IEventDeclaration e2 = translator.TranslateEventDeclaration((IEventDeclaration)o); writer.WriteEventDeclaration(e2); } else if (o is IModule) { IModule m2 = translator.TranslateModule((IModule)o, true); writer.WriteModule(m2); } else if (o is IModuleReference) { IModuleReference mr2 = translator.TranslateModuleReference((IModuleReference)o); writer.WriteModuleReference(mr2); } else if (o is IAssembly) { IAssembly a2 = translator.TranslateAssembly((IAssembly)o, true); writer.WriteAssembly(a2); } else if (o is IAssemblyReference) { IAssemblyReference ar2 = translator.TranslateAssemblyReference((IAssemblyReference)o); writer.WriteAssemblyReference(ar2); } else if (o is IResource) { writer.WriteResource((IResource)o); } else if (o is INamespace) { writer.WriteNamespace((INamespace)o); } return(formatter.ToString()); }