dotnet / dotnet/vscode-csharp

Feature request: integrate debugging with `dotnet watch`

Open
#4,822 30 comments 54 reactions 0 assignees View on GitHub
Debugger Feature Request Triaged
Dominant language
TypeScript
Stars
3.1k
Forks
737
Avg merge
18h 40m
Merged PRs (30d)
31

Description

## Issue Description ##
Hi, im currently trying to set-up vscode in such a way that I can use both the debugger and `dotnet watch run`. When running` dotnet watch run` it spawns a new process eg `weather.exe` which the debugger can attach to. When you trigger a recompile however, `dotnet watch run` terminates the process `weather.exe` causing the debugger to also exit. This means that we have to restart the debugger every time the app is recompiled, which defeats the purpose of using `dotnet watch` in the first place.

I would suggest a configurable timeout for the debugger to give time to reattach to the previous instance once it gets detached.

I've attached `launch.json`, `tasks.json` and the log of my terminal after reloads, I've also included a repository down below.

Launch.json
```
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Attach",
"type": "coreclr",
"preLaunchTask": "watch",
"request": "attach",
"processName": "weather.exe"
}
]
}
```
Tasks.json
```
{
"version": "2.0.0",
"tasks": [
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"${workspaceFolder}/weather.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile",
"isBackground": true
}
]
}
```
`dotnet watch run log`

> Executing task: C:\Program Files\dotnet\dotnet.exe watch run C:\Users\Niels\source\repos\dotnet-watch-attach/weather.csproj /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary <

watch : Started
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7081
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5177
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Niels\source\repos\dotnet-watch-attach
watch : Exited
watch : File changed: C:\Users\Niels\source\repos\dotnet-watch-attach\Controllers\WeatherForecastController.cs
watch : Started
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7081
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5177
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Niels\source\repos\dotnet-watch-attach
watch : Exited
watch : File changed: C:\Users\Niels\source\repos\dotnet-watch-attach\Controllers\WeatherForecastController.cs
watch : Started
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7081
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5177
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Niels\source\repos\dotnet-watch-attach

## Steps to Reproduce ##
Repository to reproduce: [here](https://github.com/Trottero/dotnet-watch-attach-sample)

Launch the configuration: .NET Core Attach

## Expected Behavior ##
Debugger stays attached

## Actual Behavior ##
Debugger gets terminated as `dotnet watch run` terminates the process it is attached to.

## Logs ##

### OmniSharp log ###

Starting OmniSharp server at 14/10/2021, 13:23:50
Target: c:\Users\Niels\source\repos\dotnet-watch-attach

OmniSharp server started.
Path: c:\Users\Niels\.vscode\extensions\ms-dotnettools.csharp-1.23.16\.omnisharp\1.37.16\OmniSharp.exe
PID: 12536

[info]: OmniSharp.Stdio.Host
Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
Checking the 'DOTNET_ROOT' environment variable to find a .NET SDK
[info]: OmniSharp.Services.DotNetCliService
Using the 'dotnet' on the PATH.
[info]: OmniSharp.Services.DotNetCliService
DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
Located 2 MSBuild instance(s)
1: Visual Studio Enterprise 2019 16.10.31424.327 16.10.2 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
2: StandAlone 17.0.0 - "c:\Users\Niels\.vscode\extensions\ms-dotnettools.csharp-1.23.16\.omnisharp\1.37.16\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
Registered MSBuild instance: Visual Studio Enterprise 2019 16.10.31424.327 16.10.2 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140
[info]: OmniSharp.Cake.CakeProjectSystem
Detecting Cake files in 'c:\Users\Niels\source\repos\dotnet-watch-attach'.
[info]: OmniSharp.Cake.CakeProjectSystem
Could not find any Cake files
[info]: OmniSharp.MSBuild.ProjectSystem
No solution files found in 'c:\Users\Niels\source\repos\dotnet-watch-attach'
[info]: OmniSharp.MSBuild.ProjectManager
Queue project update for 'c:\Users\Niels\source\repos\dotnet-watch-attach\weather.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
Detecting CSX files in 'c:\Users\Niels\source\repos\dotnet-watch-attach'.
[info]: OmniSharp.Script.ScriptProjectSystem
Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
Configuration finished.
[info]: OmniSharp.Stdio.Host
Omnisharp server running using Stdio at location 'c:\Users\Niels\source\repos\dotnet-watch-attach' on host 15580.
[info]: OmniSharp.MSBuild.ProjectManager
Loading project: c:\Users\Niels\source\repos\dotnet-watch-attach\weather.csproj
[warn]: OmniSharp.MSBuild.ProjectLoader
Targeting .NET 6.0 in Visual Studio 2019 is not supported.
[info]: OmniSharp.MSBuild.ProjectManager
Successfully loaded project file 'c:\Users\Niels\source\repos\dotnet-watch-attach\weather.csproj'.
c:\Users\Niels\source\repos\dotnet-watch-attach\weather.csproj
C:\Program Files\dotnet\sdk\6.0.100-rc.2.21505.57\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets(134,5): Error: Targeting .NET 6.0 in Visual Studio 2019 is not supported.

[info]: OmniSharp.MSBuild.ProjectManager
Adding project 'c:\Users\Niels\source\repos\dotnet-watch-attach\weather.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
Update project: weather
Received response for /v2/getcodeactions but could not find request.

### C# log ###
None
## Environment information ##

**VSCode version**: 1.61.0
**C# Extension**: 1.23.16

Dotnet Information
.NET SDK (reflecting any global.json):
Version: 6.0.100-rc.2.21505.57
Commit: ab39070116

Runtime Environment:
OS Name: Windows
OS Version: 10.0.19043
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\6.0.100-rc.2.21505.57\

Host (useful for support):
Version: 6.0.0-rc.2.21480.5
Commit: 6b11d64e7e

.NET SDKs installed:
2.0.2 [C:\Program Files\dotnet\sdk]
2.1.2 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.300 [C:\Program Files\dotnet\sdk]
2.1.526 [C:\Program Files\dotnet\sdk]
3.1.120 [C:\Program Files\dotnet\sdk]
3.1.414 [C:\Program Files\dotnet\sdk]
5.0.104 [C:\Program Files\dotnet\sdk]
5.0.301 [C:\Program Files\dotnet\sdk]
5.0.303 [C:\Program Files\dotnet\sdk]
6.0.100-rc.1.21458.32 [C:\Program Files\dotnet\sdk]
6.0.100-rc.2.21505.57 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.0-rc.2.21480.10 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.0-rc.2.21480.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.11 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.0-rc.2.21501.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download

Visual Studio Code Extensions

|Extension|Author|Version|
|---|---|---|
|azure-account|ms-vscode|0.9.9|
|azure-pipelines|ms-azure-devops|1.191.0|
|azurerm-vscode-tools|msazurermtools|0.15.4|
|azurite|Azurite|3.14.2|
|beautify|HookyQR|1.5.0|
|bracket-pair-colorizer-2|CoenraadS|0.2.1|
|chat|karigari|0.35.0|
|clang-format|xaver|1.9.0|
|cpptools|ms-vscode|1.7.0|
|csharp|ms-dotnettools|1.23.16|
|debugger-for-edge|msjsdiag|1.0.15|
|discord-vscode|icrawl|5.7.0|
|EditorConfig|EditorConfig|0.16.4|
|gc-excelviewer|GrapeCity|3.0.44|
|githistory|donjayamanne|0.6.18|
|github-vscode-theme|GitHub|5.0.0|
|java|redhat|0.82.0|
|jupyter|ms-toolsai|2021.9.1001312534|
|jupyter-keymap|ms-toolsai|1.0.0|
|jupyter-renderers|ms-toolsai|1.0.3|
|ng-template|Angular|12.2.1|
|pdf|tomoki1207|1.1.0|
|powershell|ms-vscode|2021.10.0|
|prettier-vscode|esbenp|9.0.0|
|python|ms-python|2021.10.1336267007|
|rainbow-csv|mechatroner|1.9.1|
|remote-containers|ms-vscode-remote|0.202.4|
|remote-ssh|ms-vscode-remote|0.65.8|
|remote-ssh-edit|ms-vscode-remote|0.65.8|
|remote-wsl|ms-vscode-remote|0.58.2|
|shadered|dfranx|0.0.5|
|shaderlabformatter|litefeel|0.4.1|
|shaderlabvscodefree|amlovey|1.2.8|
|unity-debug|Unity|3.0.2|
|vetur|octref|0.34.1|
|vscode-azurefunctions|ms-azuretools|1.5.2|
|vscode-azureresourcegroups|ms-azuretools|0.4.0|
|vscode-commons|redhat|0.0.6|
|vscode-css-formatter|aeschli|1.0.1|
|vscode-dotnet-auto-attach|DennisMaxJung|1.1.1|
|vscode-dotnet-runtime|ms-dotnettools|1.3.0|
|vscode-eslint|dbaeumer|2.2.1|
|vscode-html-css|ecmel|1.10.2|
|vscode-java-debug|vscjava|0.36.0|
|vscode-java-dependency|vscjava|0.18.8|
|vscode-java-pack|vscjava|0.18.5|
|vscode-java-test|vscjava|0.32.0|
|vscode-maven|vscjava|0.34.0|
|vscode-nuget-gallery|patcx|0.0.24|
|vscode-peacock|johnpapa|3.10.1|
|vscode-proto3|zxh404|0.5.4|
|vscode-pylance|ms-python|2021.10.0|
|vscode-remote-extensionpack|ms-vscode-remote|0.21.0|
|vscode-xml|redhat|0.18.0|
|vscodeintellicode|VisualStudioExptTeam|1.2.14|
|vsliveshare|ms-vsliveshare|1.0.4991|
|vsliveshare-audio|ms-vsliveshare|0.1.91|
|vsliveshare-pack|ms-vsliveshare|0.4.0|
|wav-preview|sukumo28|1.8.0|;

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.