我尝试在 Windows 中使用 VS 2022 IDE 从 WSL2 进行调试,但出现以下错误:
cwd 值确实看起来有问题,但是如何修复它?
我正在使用.netcore 6.0.101、Ubuntu 20.04.3 和 Windows 11。
launchSettings.json:
{
"profiles": {
"WSL": {
"commandName": "WSL2",
"launchBrowser": false,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "local"
},
"applicationUrl": "https://localhost:56962;http://localhost:56963",
"distributionName": "Ubuntu"
}
}
}
PS C:\Users\me> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
docker-desktop-data Running 2
此问题已在 17.4 预览版 5 中修复。 最新的预览版可在此处下载。
我试图为您搜索一些有用的信息,有人说这是权限问题。但我下面的描述是正确的。
目前该扩展仅支持打开存储在 Windows 磁盘中的项目(它利用 WSL 自动挂载功能)。
在 Visual Studio 2022 中:
转到项目属性(在解决方案资源管理器中右键单击项目名称,然后在弹出菜单上单击“属性”)。 然后,在搜索栏中输入“工作目录”并单击“打开调试启动配置文件 UI”,您将在此处找到“工作目录”设置,您应该在其中设置所需的 wsl2 路径。
出现此错误是因为 Windows 不知道 WSL 上使用的 linux 路径。 但您可以使用 \wsl$ 路径访问 Windows 上的 WSL2 目录。
如果您的 WSL2 机器名称是 Ubuntu,则需要使用以下路径定义 cwd 值:
\\wsl$\Ubuntu\home\<the_rest_of_the_path_you_need>
我可以在文件资源管理器中输入“\wsl$”和“\wsl.localhost”,它将正确打开我的远程 Linux 文件系统,但无论出于何种原因,当我在工作目录字段中尝试这些路径时,它们都无法解析。因此,为了让它为我工作,我必须使用 Linux POSIX 样式路径手动引用该路径。如果您像这样引用路径,则需要使用项目路径填充workingDirectory 字段,并使用构建的.dll 文件的路径填充commandLineArgs 字段。这是我的完整工作示例:
"WSL": {
"commandName": "WSL2",
"workingDirectory": "/home/username/path/to/project/directory",
"launchBrowser": true,
"launchUrl": "https://localhost:7056/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://localhost:7056;http://localhost:5183"
},
"commandLineArgs": "bin/Debug/net8.0orWhateverVersionYouAreUsing/projectName.dll"
}
我在这里找到了一条消息,解释了如何操作。