我正在使用dotnet run
命令启动命令行并运行我的应用程序。这启动了Kestrel并启动了我的应用程序。
我应该如何确定连接调试器的过程,以便我可以调试Kestrel现在托管的网站?
我特别需要能够这样做 - 这意味着我不能使用标准的F5。
答案 0 :(得分:5)
不幸的是,现在无法使用Visual Studio或.NET Core提供的工具来判断。但请注意,社区已经请求了此功能here,因此您可以在那里表达您的意见。
目前,最好的选择是按照to find out the id of the process given the application's port:
步骤进行操作==18266== HEAP SUMMARY:
==18266== in use at exit: 0 bytes in 0 blocks
==18266== total heap usage: 1 allocs, 1 frees, 64 bytes allocated
netstat -abon | findStr "127.0.0.1:{PORTNUMBER}"
如果您喜欢冒险,可能需要使用类似PowerShell的东西,它会直接返回端口号:
dotnet.exe
答案 1 :(得分:2)
您可以print the pid to the console and use that to select from Ctrl-Alt-P
Console.WriteLine($"Running at pid {System.Diagnostics.Process.GetCurrentProcess().Id}");
答案 2 :(得分:0)
较旧的问题,但这是我们如何解决它。
从头开始,使用$ dotnet run
将创建一个Kestrel实例,因此可以很容易地从Visual Studio附加到它。
但是,运行$ dotnet build && dotnet run
将创建构建服务器的实例和Kestrel的实例。现在,很难知道要附加什么dotnet
进程。此外,多次运行此命令可以创建其他进程。
我们的解决方案是使用$ dotnet build && dotnet build-server shutdown && dotnet run
。这样将在构建后停止构建服务器,因此现在仅需附加一个dotnet
进程。
此处有时可能会有其他解决方案:https://github.com/dotnet/cli/issues/9481