关于 .net:这个 dotnet 核心调试设置我做错了什么?

what am I doing wrong with this dotnet core debug setup?

我是 dotnet core 的新手,我刚开始一个新项目,其中有一个用 dotnet core 编写的现有应用程序。有一个用 dotnet core 编写的现有控制台应用程序。我可以在 VS 中以调试模式运行应用程序,并且 Main() 方法中第一行代码的断点被命中。我需要遵循文档中的一些说明,这些说明指出应用程序应该可以从 powershell 控制台执行为"dotnet run -- -a"。我在控制台应用程序中尝试了 "Debug > Attach to Process > dotnet.exe" 但是当我通过 powershell 控制台执行 "dotnet run -- -a" 命令时,在第一行代码中的断点Main() 方法没有被击中。知道我在这里做错了什么吗?


当你使用 a€?Attach to Processa€? Visual Studio 中的功能,您可以将调试器附加到已运行的进程。由于您首先使用 dotnet run 启动进程,因此很可能在附加调试器时,您的应用程序的开头已经运行。

这使得一个€?附加到Processa€?不太适合在应用程序启动期间需要调试器的调试目的。相反,它对于已经可以运行一段时间并且执行某些操作会触发您想要调试的行为的应用程序更有用。例如,对于 Web 应用程序,您可以只启动 Web 应用程序,然后附加到它,并且只有通过向 Web 应用程序发出请求,您才能访问要调试的代码。

如果您想在应用程序启动期间对其进行调试,并且您不能直接从 Visual Studio 中运行该应用程序,那么您可以使用自定义调试目标。

为此,打开项目属性并转到a€?Debuga€?标签。在那里,选择一个€?Executablea€?作为一个€?Launcha€?键入然后指定启动应用程序所需的设置:

Running

然后,当您按 F5 开始调试应用程序时,将启动该可执行文件而不是项目。这样,即使在其 Main 方法中,您也应该能够正确调试您的应用程序。