无法使用 VS 2022 调试 WSL2 - 无效的“cwd”值

问题描述 投票:0回答:5

我尝试在 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
.net-core windows-subsystem-for-linux wsl-2 asp.net-core-6.0
5个回答
3
投票

此问题已在 17.4 预览版 5 中修复。 最新的预览版可在此处下载。


1
投票

我试图为您搜索一些有用的信息,有人说这是权限问题。但我下面的描述是正确的。

目前该扩展仅支持打开存储在 Windows 磁盘中的项目(它利用 WSL 自动挂载功能)。

相关帖子: 使用 Visual Studio 在 WSL 2 中调试您的 .NET Core 应用程序


1
投票

在 Visual Studio 2022 中:

转到项目属性(在解决方案资源管理器中右键单击项目名称,然后在弹出菜单上单击“属性”)。 然后,在搜索栏中输入“工作目录”并单击“打开调试启动配置文件 UI”,您将在此处找到“工作目录”设置,您应该在其中设置所需的 wsl2 路径。


1
投票

出现此错误是因为 Windows 不知道 WSL 上使用的 linux 路径。 但您可以使用 \wsl$ 路径访问 Windows 上的 WSL2 目录。

如果您的 WSL2 机器名称是 Ubuntu,则需要使用以下路径定义 cwd 值:

\\wsl$\Ubuntu\home\<the_rest_of_the_path_you_need>

0
投票

我可以在文件资源管理器中输入“\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"
}

我在这里找到了一条消息,解释了如何操作。

© www.soinside.com 2019 - 2024. All rights reserved.