在WSL中开发
在Visual Studio代码远程- WSL扩展允许您使用的Windows子系统为Linux(WSL)来自VS代码您的全职开发环境权。您可以在基于Linux的环境中进行开发,使用特定于Linux的工具链和实用程序,以及在Windows的舒适环境下运行和调试基于Linux的应用程序。
该扩展名直接在WSL中运行命令和其他扩展名,因此您可以编辑WSL或已安装的Windows文件系统中的文件(例如/mnt/c
),而不必担心路径问题,二进制兼容性或其他跨OS挑战。
这使得VS Code可以提供本地质量的开发体验 -包括完整的IntelliSense(完成功能),代码导航和调试- 不管代码托管在何处。
入门
安装
要开始使用,您需要:
-
安装Windows Subsystem for Linux和首选的Linux发行版。
注意: WSL 1 对于某些类型的开发确实有一些已知的限制,并且WSL 2支持是试验性的。另外,由于
glibc
扩展程序内部代码的依赖性,安装在Alpine Linux中的扩展程序可能无法工作。有关详细信息,请参见“ 远程开发和Linux”文章。 -
在Windows端(不在WSL中)安装Visual Studio Code。
注意:在安装过程中提示您选择“其他任务”时,请确保选中“ 添加到路径”选项,以便您可以使用以下
code
命令在WSL中轻松打开文件夹。 -
安装远程开发扩展包。
打开一个远程文件夹或工作区
从WSL终端
使用VS Code在Linux的Windows子系统内部打开文件夹与从命令提示符或PowerShell打开Windows文件夹非常相似。
-
打开WSL终端窗口(使用开始菜单项或
wsl
在命令提示符/ PowerShell中键入)。 -
导航到您要在VS Code中打开的文件夹(包括但不限于Windows文件系统挂载,例如
/mnt/c
) -
键入
code .
在终端中。首次执行此操作时,您应该看到在WSL中运行所需的VS Code提取组件。这应该只需要一会儿,并且只需要一次。注意:如果此命令不起作用,则可能需要重新启动终端,或者在安装VS Code时未将其添加到路径中。
-
片刻之后,将出现一个新的VS Code窗口,您将看到VS Code正在WSL中打开该文件夹的通知。
VS Code现在将继续在WSL中进行自我配置,并让您保持最新状态。
-
完成后,您现在将在左下角看到WSL指示器,并且可以像平常一样使用VS Code!
而已!您在此窗口中执行的所有VS Code操作都将在WSL环境中执行,从编辑和文件操作到调试,使用终端等更多操作。
从VS代码
或者,您可以直接从VS Code打开“远程WSL”窗口:
- 启动VS Code。
- 按F1键,为默认发行版选择“ Remote-WSL:新窗口”,或为特定发行版选择“ 使用Distro的Remote-WSL:新窗口”。
- 使用文件菜单打开您的文件夹。
如果已经打开了文件夹,则还可以使用Remote-WSL:在WSL中重新打开命令。系统将提示您使用哪个发行版。
如果您在WSL窗口中并想在本地窗口中打开当前输入,请使用Remote-WSL:在Windows中重新打开。
从WINDOWS命令提示符
要直接从Windows提示符下打开WSL窗口,请使用--remote
命令行参数:
code --remote wsl+<distro name> <path in WSL>
例如: code --remote wsl+Ubuntu /home/jim/projects/c
使用Git
如果在WSL和Windows中使用相同的存储库,请确保设置一致的行尾。有关详细信息,请参见提示和技巧。
您还可以通过将WSL配置为使用Windows Git凭据管理器来避免使用密码。有关详细信息,请参见提示和技巧。
管理扩展
VS Code在以下两个位置之一运行扩展:在UI /客户端本地或在WSL中。虽然会在本地安装影响VS Code UI的扩展(例如主题和代码片段),但大多数扩展将驻留在WSL内。
如果从扩展视图安装扩展,它将自动安装在正确的位置。安装后,您可以根据类别分组确定扩展的安装位置。将有“ 本地-已安装”类别和一个“ WSL”类别。
注意:如果您是扩展作者,并且扩展无法正常工作或安装在错误的位置,请参阅支持远程开发以获取详细信息。
实际上需要远程运行的本地扩展将在“ 本地安装”类别中显示为灰色并禁用。选择安装在您的远程主机上安装扩展。
您还可以通过以下方法将WLS中所有本地安装的扩展安装到WSL中:使用“ 本地-已安装”标题栏右侧的云按钮,选择“ 在WSL中安装本地扩展:[名称]”。这将显示一个下拉列表,您可以在其中选择要在WSL实例中安装的本地安装扩展。
在WSL中打开终端
通过VS Code在WSL中打开终端很简单。在WSL中打开文件夹后,您在VS Code中打开的任何终端窗口(Terminal> New Terminal)将自动在WSL中运行,而不是在本地运行。
您也可以在code
同一终端窗口中使用命令行来执行许多操作,例如在WSL中打开新文件或文件夹。键入code --help
以查看命令行中可用的选项。
在WSL中进行调试
在WSL中打开文件夹后,就可以像在本地运行应用程序时一样的方式使用VS Code的调试器。例如,如果您在中选择启动配置launch.json
并开始调试(F5),则该应用程序将在远程主机上启动并将调试器附加到该主机上。
有关在中配置VS Code调试功能的详细信息,请参见调试文档.vscode/launch.json
。
WSL特定设置
在WSL中打开文件夹后,也会重复使用VS Code的本地用户设置。虽然这可以使您的用户体验保持一致,但是您可能需要在本地计算机和WSL之间更改其中的某些设置。幸运的是,一旦连接到WSL,您还可以通过运行“ 偏好设置”来设置WSL特定的设置:从命令面板(F1)打开“远程设置”命令,或者在“设置”编辑器中选择“ 远程”选项卡。每当您在WSL中打开文件夹时,这些设置将覆盖您已有的任何本地设置。
高级:环境设置脚本
在WSL中启动VS Code Remote时,不运行任何外壳启动脚本。这样做是为了避免针对shell调整的启动脚本出现问题。如果要运行其他命令或修改环境,可以在安装脚本中完成~/.vscode-server/server-env-setup
(Insiders :)~/.vscode-server-insiders/server-env-setup
。如果存在,则在启动服务器之前先处理脚本。
该脚本必须是有效的Bourne Shell脚本。请注意,无效的脚本将阻止服务器启动。如果最后得到一个阻止服务器启动的脚本,则必须使用常规的WSL Shell并删除或重命名安装脚本。
检查WSL日志(远程WSL:打开WSL日志)以获取输出和错误。
高级:在容器中打开WSL2文件夹
如果您使用的是WSL2和Docker Desktop的WSL2后端,则可以使用Remote-Containers扩展来处理存储在WSL中的源代码!只需按照以下步骤操作:
-
如果尚未安装和安装 Docker Desktop的WSL2支持,请安装并设置。
提示: 转到“设置”>“资源”>“ WSL集成”,然后将Docker与您将使用的WSL发行版集成。
-
如果尚未安装,请同时安装Remote-Containers扩展程序和WSL扩展程序。
-
接下来,像往常一样在WSL中打开您的源代码文件夹。
-
在WSL中打开文件夹后,从命令面板(F1)中选择“ 远程容器:在容器中重新打开文件夹”。
-
如果该文件夹中没有
.devcontainer/devcontainer.json
文件,则将要求您从可过滤列表或现有Dockerfile或Docker Compose文件(如果存在)中选择一个起点。
有关更多信息,请参见Remote-Containers文档。
已知限制
本节包含WSL的常见问题列表。目的不是提供完整的问题列表,而是强调WSL中常见的一些问题。
我看到EACCESS:尝试重命名打开的工作区中的文件夹时,权限被拒绝的错误
这是由VSCode**的文件监视程序导致的WSL文件系统实现(Microsoft / WSL#3395和Microsoft / WSL#1956)的已知问题。该问题仅在WSL 2中得以解决。
为避免此问题,请将其设置remote.WSL.fileWatcher.polling
为true。但是,基于轮询的文件监视对大型工作区的性能有影响。
对于较大的工作空间,您想增加轮询间隔:remote.WSL.fileWatcher.pollingInterval
并控制要监视的文件夹:files.watcherExclude
。
WSL 2没有文件监视程序问题,也不受新设置的影响。