void PrintModuleHeader (StringBuilder result, DomCecilCompilationUnit.Module module) { result.Append ("<span style=\"comment\">"); result.Append (Ambience.SingleLineComment ( String.Format (GettextCatalog.GetString ("Module <b>{0}</b>"), module.ModuleDefinition.Name))); result.Append ("</span>"); result.AppendLine (); }
public override bool HasChildNodes(ITreeBuilder builder, object dataObject) { DomCecilCompilationUnit compilationUnit = (DomCecilCompilationUnit)dataObject; return(compilationUnit.Modules.Any()); }
public override string GetNodeName(ITreeNavigator thisNode, object dataObject) { DomCecilCompilationUnit compilationUnit = (DomCecilCompilationUnit)dataObject; return(compilationUnit.AssemblyDefinition.Name.Name); }
public List <ReferenceSegment> Disassemble(TextEditorData data, ITreeNavigator navigator) { DomCecilCompilationUnit compilationUnit = (DomCecilCompilationUnit)navigator.DataItem; return(DomMethodNodeBuilder.Decompile(data, DomMethodNodeBuilder.GetModule(navigator), null, b => b.AddAssembly(compilationUnit.AssemblyDefinition, true))); }
// string fileName; public AssemblyProjectDom(string fileName) { // this.fileName = fileName; UpdateFromParseInfo(DomCecilCompilationUnit.Load(fileName, false, true), true); }
protected override void ParseFile(string fileName, IProgressMonitor parentMonitor) { if (!File.Exists(fileName)) { return; } IProgressMonitor monitor = parentMonitor; IDisposable timer = Counters.AssemblyParseTime.BeginTiming(); // Update the package version SystemPackage pkg = Runtime.SystemAssemblyService.GetPackageFromPath(assemblyFile); if (pkg != null) { packageVersion = pkg.Name + " " + pkg.Version; } try { if (parentMonitor == null) { monitor = ProjectDomService.GetParseProgressMonitor(); } parsing = true; if (monitor != null) { monitor.BeginTask(string.Format(GettextCatalog.GetString("Parsing assembly: {0}"), Path.GetFileName(fileName)), 1); } if (useExternalProcess) { using (DatabaseGenerator helper = GetGenerator(true)) { string tmpDbFile = helper.GenerateDatabase(runtime.Id, fx.Id, baseDir, assemblyFile); if (Disposed) { if (tmpDbFile != null) { File.Delete(tmpDbFile); } return; } if (tmpDbFile != null) { // GenerateDatabase generates the info in a temp file. Now we have to // unlock the current database file, copy the new file over it, and // read (and lock) the database again. UnlockDatabaseFile(); File.Delete(RealDataFile); File.Move(tmpDbFile, RealDataFile); Read(); } } } else { DomCecilCompilationUnit ainfo = DomCecilCompilationUnit.Load(fileName, false, true); UpdateTypeInformation(ainfo.Types, ainfo.Attributes, fileName); // Reset the error retry count, since the file has been // successfully parsed. FileEntry e = GetFile(fileName); e.ParseErrorRetries = 0; Flush(); } } catch (Exception ex) { FileEntry e = GetFile(fileName); e.LastParseTime = DateTime.MinValue; if (e.ParseErrorRetries > 0) { if (--e.ParseErrorRetries == 0) { e.DisableParse = true; } } else { e.ParseErrorRetries = 3; } if (monitor != null) { monitor.ReportError("Error parsing assembly: " + fileName, ex); } throw; } finally { parsing = false; if (monitor != null) { monitor.EndTask(); if (parentMonitor == null) { monitor.Dispose(); } } timer.Dispose(); } ProjectDomService.NotifyAssemblyInfoChange(fileName, assemblyFile); }