# 解决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`目录设置到内存盘?那其他那些行为比较规矩的软件也享受不到内存盘的自动加速了。[在这里提了个问题貌似也没人感兴趣](https://stackoverflow.com/questions/52341576/what-are-those-edg-tmp-files-created-by-visual-studio-2017-in-temp-direct)。 好在咱也是受过`*nix`熏陶的,想到根源出在环境变量不合适上,马上想到了为`VS`进程单独设置环境变量的方法: 1. 在桌面上复制一个`VS`的快捷方式,以后都要用这个快捷方式来启动。喜欢桌面干净的,就去找开始菜单里面的`VS`快捷方式来操作。 2. 右键属性,将快捷方式的“目标”更改为: ``` 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`文件,恢复外观。