272011
 

在使用Visual Studio 2010开发C++程序的时候,会发现有一些奇怪的文件被创建出来,比如一个叫ipch的文件夹,和一个与工程同名的.sdf文件,而且ipch下面的文件和.sdf文件都很大,至少有10M,大项目可能超过100M,那这些文件是干什么用的呢?这些文件是Visual Studio用来保存预编译的头文件Intellisense用的,删除这些文件对于工程的开发完全没有影响。那如果我既想使用预编译的头文件和Intellisense,又不想看到这些无聊的文件该怎么办呢?

在Visual Studio里进入如下设置:进入“Tools > Options”,选择“Text Editor > C/C++ > Advanced”,然后找到“Fallback Location”。然后把“Always use Fallback Location”和“Do Not Warn if Fallback Location Used”设置成“True”就可以了,如下图:

如果想把这些文件保存到特定的文件夹,就要设置一下Fallback Location,否则Visual Studio会用系统的临时文件夹来保存这些文件。

然后重启Visual Studio,那些讨厌的文件就不见了。这个设置对于像我这样使用Dropbox来同步代码的人来说尤其有用。

192011
 

如果你在打开某些应用程序的时候碰到下面这个错误,请参考这篇文章

没有找到 MSVCR100.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。

而如果你是开发人员,你开发的应用程序存在这个问题,那么有以下几种方法可以解决:

  1. 对C运行库使用静态链接(/MT),详情见C Run-Time Libraries/MD, /MT, /LD (Use Run-Time Library)。这样做的后果是编译出来的二进制文件会稍微大一点,且不会使用系统中的MSVCR100.dll,也就是说如果MSVCR100.dll有一个bug被修复的话,你需要重新编译并发布你的应用程序。
  2. 在你发布的应用程序中包含一个MSVCR100.dll。没有测试过,不过我认为这种方法也是可行的。缺点和上面一样,如果MSVCR100.dll有一个bug被修复的话,你需要重新编译并发布你的应用程序。
  3. 在你的应用程序的安装包中加入Visual C++可再发行组件包。这样做的好处是MSVCR100.dll会被安装到系统目录中,可以享受到后续的Windows自动更新。不过这种方法不适用于绿色软件,即不需要安装的软件。
  4. 强制你的客户在使用这个应用程序之前,都自行安装好Visual C++可再发行组件包。可行性不大。

每种方式各好优劣,看具体情况而定吧……