使用 mklink 把 Visual Studio 2017 装到非系统盘
最近 C 盘又飘红了,通过 spacesniffer.exe 分析发现:Visual Studio 2017 至少占用了 C 盘 6 个 G 的内存。所以,我想给 Visual Studio 2017 装在 C 盘的部分换个地方。经过搜索,发现 Windows cmd 自带的 mklink 指令就可以帮我实现目标:不让 Visual Studio 2017 占用 C 盘的空间。 想看使用 mklink 迁移 Visual Studio 具体操作的小伙伴,可以直接按照第四部分操作。
一、如何使用 mklink
首先,来看下什么是 mklink 。Win + R 打开 cmd, 输入 mklnk
指令。这就是 mklink 。
下面给出一个 mklink 的使用示例:
mklink /d "C:\ProgramData\Package Cache" "D:\ProgramData\Package Cache"
其中,
"C:\ProgramData\Package Cache"
是 符号链接所在的地址路径"D:\ProgramData\Package Cache"
是 文件实际存储的地址路径
二、为什么要使用 mklink
mklink 是用来创建符号链接(软链接)mklink /D "link" "target"
, 把(目标)文件夹或者文件“虚拟”链接到其他(软链接)位置的,使用软链接有以下好处:
- 应用软件的一些文件是默认存储在 C 盘的,使用软链接可以使那些文件实际存储在其他非系统盘,不占用 C 盘空间。
- 使用软链接不会导致应用软件找不到文件路径,从而报错或者在 C 盘生成新的文件夹存储文件。
- 使用软链接应用软件新生成的要存储到软链接位置的文件会自动保存在目标文件位置。
- 软链接本身不占用任何存储空间。
这样的话,使用软链接 Visual Studio 等应用软件生成新的用户文件就会自动保存在目标位置下,不用手动迁移了。同时,应用软件也不会在默认位置,一般是 C 盘,生成用户文件占用空间了。
软链接创建后会显示一个链接的图标,下图给出的示例是"F:\VSProgram Files (x86)\Microsoft Visual Studio"
在 C 盘的软链接 "C:\Program Files (x86)\Microsoft Visual Studio"
。 Microsoft Visual Studio 文件夹实际存储在 F:\VSProgram Files (x86)
文件夹下,占用 F 盘的空间,不占用 C 盘的任何空间。
不相信的话,点击打开文件所在的位置,显示文件确实存储在 F 盘。**但应用软件会认为 Microsoft Visual Studio 文件夹还在 C 盘下。**因此,应用软件不会创建新的用户文件占用 C 盘空间,也不会出现找不到文件目录的情况。
三、为什么 mklink 有用
下图来自 B 站视频 mklink 和 快捷方式的区别 。图中 资料.avi
是为健身操.mp4
建立的软链接,它们同时指向文件本身。也就是说,你操作软链接和操作文件是一样的,最终都指向文件本身。
四、使用 mklink 迁移 Visual Studio
首先不建议直接使用 mklink 把 Visual Studio 在 C 盘的相关文件夹迁移到其他盘中。我此前有过一次失败的尝试, Visual Studio 2017 可以正常打开,就是没有 C++ 空项目等设置,无法新建 C++ 项目了。
本文建议,先使用 mklink 建立软链接,再使用 Visual Studio Installer 重新安装 Visual Studio。只是重新安装,就可以给 C 盘省出 6 个 G 左右的空间,还是很合算的。
注意首先电脑上需要安装完成 Visual Studio Installer ,这里给出 Visual Studio Installer 的官网下载链接 。打开 Visual Studio Installer 在安装工作负荷(组件)时退出,先不进行安装。
下面按照如下步骤建立软链接:
1. 建立文件夹
Visual Studio 安装时默认会在 C 盘生成以下文件夹:
C:\Program Files (x86)\Windows Kits
C:\Program Files (x86)\Microsoft Visual Studio
C:\Program Files (x86)\Microsoft SDKs
C:\ProgramData\Microsoft Visual Studio
C:\ProgramData\Microsoft\VisualStudio
C:\ProgramData\Package Cache
所以,需要为上述目录创建软链接,使 Visual Studio 默认安装在 C 盘的文件实际存储在非系统盘,这里以 F 盘为例。
创建软链接需要指定目标文件夹,也就是文件实际的存储位置。
使用 mkdir 命令,创建空的目标文件夹:
Microsoft Windows [版本 10.0.19044.1348]
(c) Microsoft Corporation。保留所有权利。
C:\Windows\system32>F:
F:\>cd F:\VSProgramData
F:\VSProgramData>mkdir "Package Cache"
F:\VSProgramData>mkdir "Microsoft\VisualStudio"
F:\VSProgramData>mkdir "Microsoft Visual Studio"
F:\VSProgramData>cd F:\VSProgram Files (x86)
F:\VSProgram Files (x86)>mkdir "Windows Kits"
F:\VSProgram Files (x86)>mkdir "Microsoft Visual Studio"
F:\VSProgram Files (x86)>mkdir "Microsoft SDKs"
F:\VSProgram Files (x86)>
命令执行后,会在 VSProgram Files (x86) 和 VSProgramData 目录下生成空的文件夹,目录名字可以自定义
2. 创建软链接
软链接创建需要在具有管理员权限的 cmd 下执行
注意如果 C 盘路径下存在同名的文件或者软链接,将无法创建软链接
下面的例子中,C 盘中已经存在 "C:\ProgramData\Microsoft\VisualStudio"
,所以无法创建软链接
所以请注意检查软链接所在位置是否存在同名文件夹或软链接,如果同名文件夹中包含文件,记得要将同名文件夹剪切到目标路径下,覆盖刚才生成的空文件夹。 这里是需要"C:\ProgramData\Microsoft\VisualStudio"
路径下的 VisualStudio 文件夹剪切到 "F:\VSProgramData\Microsoft“
下,覆盖该路径下原来的空文件夹 VisualStudio
。
如果同名文件夹为空,或者有之前的软链接,直接删除即可。软链接只需创建一次,直接删除 C 盘的软链接文件夹,不会影响到原始文件。注意不要直接删除软链接文件夹下的文件,因为软链接下的文件和原始文件指向同一个对象,在软链接文件夹下创建或删除文件,原始文件夹也会创建或删除文件。
使用如下命令为 F 盘的目标文件夹在 C 盘创建软链接
mklink /d "C:\ProgramData\Package Cache" "F:\VSProgramData\Package Cache"
mklink /d "C:\ProgramData\Microsoft\VisualStudio" "F:\VSProgramData\Microsoft\VisualStudio"
mklink /d "C:\Program Files (x86)\Windows Kits" "F:\VSProgram Files (x86)\Windows Kits"
mklink /d "C:\Program Files (x86)\Microsoft SDKs" "F:\VSProgram Files (x86)\Microsoft SDKs"
mklink /d "C:\Program Files (x86)\Microsoft Visual Studio" "F:\VSProgram Files (x86)\Microsoft Visual Studio"
这里不建议创建 "C:\ProgramData\Microsoft Visual Studio"
软链接,所以只需创建 5 个软链接
# mklink /d "C:\ProgramData\Microsoft Visual Studio" "F:\VSProgramData\Microsoft Visual Studio"
创建完成符号链接,如下图所示。
3. 使用 Visual Studio Installer 安装工作负荷
软链接创建完毕后,打开 Visual Studio Installer ,选择需要的工作负荷进行安装。记得更改安装位置盘符为非系统盘 D盘
经过一段时间的等待,Visual Studio 2017 就安装完毕了。
4. 测试安装
下面创建一个简单的 C++项目 hello world 来验证安装是否成功。
#include<iostream>
using namespace std;
int main()
{
char tip[50];
cout << "hello world" << endl;
cout << "Visual Studio 2017 has installed successfully." << endl;
cout << "Start program" << endl;
cin >> tip;
return 0;
}
运行程序,如下图所示。已经成功安装 Visual Studio 2017 。
成功拯救 C 盘,开心。