Angelo Lee's Blog
This is my kingdom .If i don't fight for it ,who will ?

使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量,可惜毕竟硬盘还没有廉价到免费的地步。

那么,该怎么解决呢?其实可以关闭它。方法:

Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为True

但是这样的办法会产生另外的一些问题,可能会导致其他的一些功能不能使用。另外一种解决方法是:

Tools->Options->Text Editor->C/C++->Advanced,在 Fallback Location 的属性组中,将"Always Use Fallback Location"设置为 true,将"Do Not Warn If Fallback Location Used" 设置为 true ,然后删除解决方案目录下的 sdf 文件和 ipch 目录,再次打开解决方案,发现这些烦人的东西已经不见了。

那么那些文件放置到那里了呢?看 "Fallback Location" 属性说明:这是存储浏览信息数据库和 IntelliSense 文件的第二个位置,如果不指定则放置到临时目录中;到临时目录一看,里面有一个 VC++ 的目录,都在那个目录里面呢。

可以在 "Fallback Location" 属性中,设置一个固定的路径来存储这些文件,比如D:\VS2010Temp,这样也比较好管理这些庞大的臃肿的文件,可以定期清理掉它们,释放出硬盘空间!

 

       昨天上班时突然碰到一个很奇怪的问题,我将一个工程目录剪贴至其他目录下后,用vs 2010再次打开该工程时, 右键菜单中的“go to definition”无法正确的工作。例如在一个使用函数getExtensionMode的地方按下快捷键F12键, 弹出包含如下的Message Box:

但是明明那个函数的定义就在那个源文件里面。同样的问题也出现在同一个solution的其他文件中,这样造成查看代码很不方便,严重影响工作效率。

通过网上一番搜索之后,终于找到了出现上面情况的原因,工程目录中的ipch文件夹和.sdf文件不能正常工作。解决方法:关闭打开的工程,接着把工程目录下的ipch目录下所有文件和所有.sdf文件都删除,然后用VS 2010重新打开工程,让vs 2010重新生成那些文件,这样就可以使用F12快捷键了。

其实ipch和sdf分别是Visual Studio 2010用来保存预编译头文件和Intellisense信息的地方,对工程本身的功能没有影响,只是用来加快编译和便于代码提示。但是这部分文件通常都会占用比较庞大的磁盘空间,所以在拷贝或转移工程项目时可以把这部分文件先删掉。

有一种方法可以让这部分辅助文件不包含在工程项目目录下,减小工程项目的占用的磁盘空间,但同时又能利用这些文件带来的便利,那就是通过设置把他们统统放到一个独立于工程目录的fallback location中。在Visual Studio 2010里进入如下设置:进入“Tools > Options”,选择“Text Editor > C/C++ > Advanced”,然后找到“Fallback Location”。然后把“Always use Fallback Location”和“Do Not Warn if Fallback Location”设置成“True”,并且在“Fallback Location”中设置放置该类型文件的路径,如下图:

这样所有工程项目的预编译文件和code Intellisense信息就都放在c:\vs 2010 Intellisense\文件夹下了。

想了解更多的关于.sdf文件的信息,可以参考 http://blogs.msdn.com/b/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx

posted on 2013-01-06 20:15  Angelo Lee  阅读(240)  评论(0编辑  收藏  举报