解决Visual Studio与内存盘的功能性冲突
作为16G内存用户,本人一般都将系统临时文件位置,通过TMP/TEMP
环境变量设置到内存盘上。不过,升级到Visual Studio 2017
后,发现VS 2017
与这种做法有那么一点点冲突,具体表现为:
Visual Studio 2017
会写几个比较大的文件到TMP/TEMP
目录。一个模板比较多的C++
工程,这几个文件加起来接近4G
甚至超出,这不是16G
内存用户所能承受的;当然可以狠狠心分8G
内存盘,但那样系统原生的缓存就要受干扰了,得不偿失;- 这几个文件还是始终打开的,文件句柄不释放,其他软件就不好检测他们的大小——直接后果是
Primo Ramdisk
的动态分配机制失去了作用,经常出现可用空间为零了还不会自动增大的情况。临时文件写不进去时VS
倒也不一定报错,但是IntelliSense
肯定是没了。 - 这几个名为
edg****.tmp
的文件,在VS
里还没法设置位置,必定写入到TMP/TEMP
目录,想单独挪出来都不行。
这么一搞,难道想用VS 2017
就不能把TMP/TEMP
目录设置到内存盘?那其他那些行为比较规矩的软件也享受不到内存盘的自动加速了。在这里提了个问题貌似也没人感兴趣。
好在咱也是受过*nix
熏陶的,想到根源出在环境变量不合适上,马上想到了为VS
进程单独设置环境变量的方法:
- 在桌面上复制一个
VS
的快捷方式,以后都要用这个快捷方式来启动。喜欢桌面干净的,就去找开始菜单里面的VS
快捷方式来操作。 - 右键属性,将快捷方式的“目标”更改为:
C:\Windows\System32\cmd.exe /c SET TMP=C:\SWAP\VisualStudioTemporaryFiles&SET TEMP=C:\SWAP\VisualStudioTemporaryFiles&START C:\PROGRA~2\MICROS~2\2017\Community\Common7\IDE\devenv.exe
这相当于新建了一个CMD
环境,把TMP/TEMP
环境变量设置到你所需要的地方,再启动VS
。&
用于连接多个命令,否则要连续执行多个命令就要用BAT
文件了。 最后启动VS
用了START
命令,否则这条命令在VS
关闭后才会结束——后果是一直有个黑窗口在那里。用了START
,命令在VS
启动之后就完成了,黑窗口一闪而过。连这都接受不了的自己去写VBS
。 注意,START
仅仅接收DOS
风格的8-3
路径,并且不能加双引号,否则只会打开一个cmd窗口。DOS
格式的路径,可以用dir /x
一层一层地获得。
最后,把新的快捷方式的图标路径指向原来的devenv.exe
文件,恢复外观。