Visual Studio将原生支持WSL 2

微软在2019年更新Visual Studio,原生支持在WSL 1使用C++,现在进一步要在Visual Studio中原生支持WSL 2。所谓Visual Studio原生支持WSL,意思是开发者不需要以远程连接或是配置SSH,就可以在本地端WSL中,构建和测试C++程序代码,这将能大幅改善用户需要启动Linux环境,才能执行程序的情况,而且也不再需要于远程机器维护另一份程序代码。

Visual Studio对WSL 1的原生支持,所有命令都通过wsl.exe在本地端执行,WSL会从挂载在/mnt文件夹下的Windows磁盘访问文件,由于目前这些命令在WSL 2中执行效率没这么好,因此官方建议用户,只有在WSL 2可以提供更好的性能,以及100%兼容系统调用的时候,再使用WSL 2。

现阶段有两种情况,使用WSL 1会比WSL 2性能更好,第一是文件必须存储在Windows文件系统中时,WSL 1能更快地访问挂载在Windows的文件,也就是当程序必须使用WSL Linux发布版本,来访问Windows文件系统中的文件,且文件无法存储在Linux文件系统时,使用WSL 1能够更有效率地跨操作系统访问文件。

而第二个情况则是需要使用Windows和Linux工具,对同一个文件进行交叉编译的时候,跨Windows和Linux的文件访问性能,WSL 1明显比WSL 2更快,因此要用Windows应用程序访问Linux文件,目前要选用WSL 1。

还有另一个办法可以避免使用WSL 2带来的性能低落,便是在本地端WSL 2中,安装和执行SSH,并且在Visual Studio Connection Manager,添加新的SSH连接。不过还要安装SSH,就是多一层阻碍,因此微软决定要在Visual Studio提供WSL 2原生支持,这项支持将让开发者可以不需要添加SSH连接,就可以在WSL 2上构建和调试程序。

微软采取的支持策略,是让Visual Studio执行本地端rsync应用程序副本,将文件从Windows文件系统复制到WSL 2文件系统中,当Visual Studio侦测到用户正在使用WSL 2时,本地端rsync副本就会自动激活,不需要用户干预。