在VS2022中的wsl2中调试控制台时读取输入

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

我在 Visual Studio 2022 中创建了一个控制台应用程序,只有两行 WriteLine 和 ReadLine。在 Windows 上调试时,会打开一个控制台,显示输出并等待输入。但是,如果我将其切换到 WSL 调试,我会在“输出”窗口中获得输出,但我找不到任何方法将任何数据输入到程序的标准输入中,从而卡在读取行中。有办法做到这一点吗?也许让 Visual Studio 打开控制台窗口,而不是像 Windows 应用程序那样使用 Visual Studio 中的输出窗口?

visual-studio windows-subsystem-for-linux .net-6.0 visual-studio-2022
2个回答
2
投票

不幸的是,WSL 尚未提供读取 VS2022 上击键的控制台。我能找到的更好的方法是在输出之前使用默认的 WSL

launchSettings.json
进行调试,以发现一些错误并在输出之后创建一个新的调试设置。问题是需要手动将运行的控制台应用程序附加到 VS2022 调试器。但至少是一个解决方法。

{
  "profiles": {
    "ConsoleApp": {
      "commandName": "Project"
    },
    "WSL2": {
      "commandName": "Executable",
      "executablePath": "wsl",
      "commandLineArgs": "dotnet ConsoleApp.dll [commandLineArgs]"
    },
    "WSL": {
      "commandName": "WSL2",
      "distributionName": ""
    }
  }
}

0
投票

我也遇到过同样的问题。当您通过启动配置文件在 WSL 上启动应用程序时,VS 实际上只需在 WSL 上运行 dotnet run 即可启动您的应用程序。只需启动应用程序,然后在 WSL 上执行 ps ax,您将看到以下命令的进程:/usr/bin/dotnet /mnt/c/

最后,我做了下一步:

  1. 通过在 Windows 上指定 dll 的路径,通过 dotnet run 直接从 WSL 启动应用程序。结果我可以访问标准输入,因为应用程序将使用 Linux 控制台运行。
  2. 通过 Visual Studio 附加到 WSL 上的进程。更多详细信息可以在这里找到 https://learn.microsoft.com/en-us/visualstudio/debugger/debug-dotnet-core-in-wsl-2?view=vs-2022#attach-to-a-running -wsl-进程
© www.soinside.com 2019 - 2024. All rights reserved.