public void Decompile(Stream assemblyStream, TextWriter codeWriter) { // ReSharper disable once AgentHeisenbug.CallToNonThreadSafeStaticMethodInThreadSafeType var readerParameters = new ReaderParameters { AssemblyResolver = _assemblyResolver }; using (var module = ModuleDefinition.ReadModule(assemblyStream, readerParameters)) { var decompiler = new ICSharpCode.Decompiler.CSharp.CSharpDecompiler(module, DecompilerSettings); var syntaxTree = decompiler.DecompileWholeModuleAsSingleFile(); new CSharpOutputVisitor(codeWriter, FormattingOptions).VisitSyntaxTree(syntaxTree); } }
public string Dump() { using (var testEnvironment = RuntimeEnvironmentFactory.Create(_dependencies)) { string mainModuleFullName = Emit(testEnvironment, manifestResources: null, EmitOptions.Default); IList <ModuleData> moduleDatas = testEnvironment.GetAllModuleData(); string mainModuleSimpleName = moduleDatas.Single(md => md.FullName == mainModuleFullName).SimpleName; RuntimeEnvironmentUtilities.DumpAssemblyData(moduleDatas, out var dumpDir); string modulePath = Path.Combine(dumpDir, mainModuleSimpleName + ".dll"); var decompiler = new ICSharpCode.Decompiler.CSharp.CSharpDecompiler(modulePath, new ICSharpCode.Decompiler.DecompilerSettings()); var syntaxTree = decompiler.DecompileWholeModuleAsSingleFile(); return(syntaxTree.ToString()); } }
public void Decompile(CompilationStreamPair streams, TextWriter codeWriter) { Argument.NotNull(nameof(streams), streams); Argument.NotNull(nameof(codeWriter), codeWriter); using (var assemblyFile = new PEFile("", streams.AssemblyStream)) using (var debugInfo = streams.SymbolStream != null ? _debugInfoFactory(streams.SymbolStream) : null) { var decompiler = new ICSharpCode.Decompiler.CSharp.CSharpDecompiler(assemblyFile, _assemblyResolver, DecompilerSettings) { DebugInfoProvider = debugInfo }; var syntaxTree = decompiler.DecompileWholeModuleAsSingleFile(); new CSharpOutputVisitor(codeWriter, FormattingOptions).VisitSyntaxTree(syntaxTree); } }
public void Decompile(CompilationStreamPair streams, TextWriter codeWriter) { Argument.NotNull(nameof(streams), streams); Argument.NotNull(nameof(codeWriter), codeWriter); var readerParameters = new ReaderParameters { AssemblyResolver = _assemblyResolver }; using (var module = ModuleDefinition.ReadModule(streams.AssemblyStream, readerParameters)) { var decompiler = new ICSharpCode.Decompiler.CSharp.CSharpDecompiler(module, DecompilerSettings); var syntaxTree = decompiler.DecompileWholeModuleAsSingleFile(); new CSharpOutputVisitor(codeWriter, FormattingOptions).VisitSyntaxTree(syntaxTree); } }