MonoDevelop的.pidb文件是什么?

45

MonoDevelop会为每个项目创建这些文件。我应该将它们包含在源代码控制中吗?

2个回答

55
根据MonoDevelop博客文章
有几个长期未处理的错误报告,我也想稍微改善一下性能和内存使用情况。MonoDevelop为每个程序集或项目创建一个解析器信息数据库(pidb)文件。该文件包含有关程序集中实现的所有类的信息以及从Monodoc中提取的文档。pidb文件有三个部分:第一个部分是标头,其中包括文件格式的版本(在加载pidb时检查该版本,并且如果不匹配当前实现版本,则重新生成该文件)。第二部分是pidb文件的索引。它包含数据库中所有类的索引。索引始终完全加载到内存中,以便快速定位类。文件的第三部分包含所有类信息:方法列表、字段、属性、每个信息的文档等。索引中的每个条目都有一个文件偏移字段,该字段可用于完全加载类的所有信息(索引仅包含名称)。
因此,这似乎只是一种优化。除非您发现它对性能有很大影响,否则我个人不会将其包含在源代码控制中。我的猜测是,如果只有一个人在项目上工作,它才会真正保持有效。(如果它很大并且经常更改,则可能会发现它还会给存储库增加重大的开销。我没有检查其实际大小,但值得检查。)

1
再一次,Skeet来拯救...+1(就好像他需要这个一样)。 - ctacke

17

这些只是缓存的代码完成数据。正如Jon提供的链接所解释的那样,主要原因是为了节省内存,尽管它们也可以让您在打开项目时免于等待MD解析所有源文件和引用程序集。

pidb文件可以很快地重新生成,因此在版本控制系统中保存它们没有任何优势。实际上,除了版本控制系统存储开销外,如果人们使用具有不同pidb格式的不同MD版本,则还可能会导致问题,因此我强烈建议不要将它们保存在源代码控制中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接