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 ();
		}
コード例 #2
0
        public override bool HasChildNodes(ITreeBuilder builder, object dataObject)
        {
            DomCecilCompilationUnit compilationUnit = (DomCecilCompilationUnit)dataObject;

            return(compilationUnit.Modules.Any());
        }
コード例 #3
0
        public override string GetNodeName(ITreeNavigator thisNode, object dataObject)
        {
            DomCecilCompilationUnit compilationUnit = (DomCecilCompilationUnit)dataObject;

            return(compilationUnit.AssemblyDefinition.Name.Name);
        }
コード例 #4
0
        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)));
        }
コード例 #5
0
//		string fileName;

        public AssemblyProjectDom(string fileName)
        {
//			this.fileName = fileName;
            UpdateFromParseInfo(DomCecilCompilationUnit.Load(fileName, false, true), true);
        }
コード例 #6
0
        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);
        }