几周来我遇到了这个非常奇怪的问题并且无法解决:
我通常在 WSL2 上编写代码,它曾经在这台机器和用户上运行良好。但现在,每当我尝试在 Visual Studio Code 中打开远程资源管理器或尝试在 IntelliJ IDE 中打开“从现有文件创建新项目”时,都不会显示 WSL 发行版。
它们仍然在那里 -
wsl -l -v
列出了它们,我可以在终端中打开它们。它们内部的所有内容都可以工作(除了打开 VSCode)。
在 Windows 资源管理器中,它们的文件系统确实会显示。但在 Visual Studio Code 中,发行版列表为空,当我打开远程资源管理器时,我收到一条错误消息,指出“无法读取未定义的属性(读取“名称”)”。在 IntelliJ IDE 中,只有我的本地驱动器出现在曾经有 WSL 附加条目的地方。 当我导航到终端中 WSL 中的目录然后执行
code .
时,它会打开一个 VSCode 窗口,但随后我收到通知“未找到 WSL 发行版”。
有趣的是,以前在 IntelliJ IDE 中打开的项目仍然可以打开(但我遇到了行尾问题)。我尝试在 VSCode 中重新安装 WSL 扩展,重新启动 LXSSManager-Service,使用
netsh winsock reset
、
netsh int ip reset
、ipconfig /release
、ipconfig /renew
、ipconfig /flushdns
进行网络重置 - 并且我尝试完全重新安装 VSCode。 ..无济于事。我还查看了 Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\
下的 WSL 发行版注册表项,它们对我来说看起来不错。我还卸载了我的非主要发行版并重新安装了它们 - 所有已安装的发行版(无论是旧的还是新安装的)都存在同样的问题。
遗憾的是,我无法指定如何重现该问题,因为在此设置中所有内容都可以正常工作,并且没有任何内容被故意更改。
我的 Windows 版本是
Windows 11 Version 22H2 (OS Build 22621.963)
。
setx WSL_UTF8 0
并重新启动 VS Code
No WSL distros found
问题。
上周我在 Ubuntu 16.04 中的项目运行良好。我尝试了类似的新发行版、WSL 扩展和 VS Code 安装,但没有任何区别。变化的是 WSL 调试终端名称被破坏了:
https://github.com/microsoft/vscode-remote-release/issues/3910#issuecomment-722269579
的代码返回空白,但需要来自wsl -l
的UTF16,因此VS Code尚未与新版本兼容WSL_UTF8 环境变量。
在批处理脚本中使用 WSL_UTF8 选项的安全方法示例可在https://stackoverflow.com/a/76970840/1919793