是否热衷于使用Visual Studio代码为.NET Core 3.1项目设置运行自动dotnet监视?

时间:2020-01-20 20:35:44

标签: debugging .net-core asp.net-core-webapi core

修改某些源代码文件后,我需要设置自动重启。

我正在将VS Code与Dotnet Core 3.1结合使用来开发Web API。

调试开始时,我可以看到我的REST Api发布在http://localhost:5001/api/entities中,但是如果我更改模型或其他内容,则需要重新启动调试才能看到更改。

我尝试使用终端上的dotnet watch run启动项目并尝试进行调试,但是我想知道是否有可能在项目中进行配置以使用{{1}启动所有调试}。

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但我找到了解决方案。

我使用了 Marco 的解决方案并将其添加到我的 tasks.json 中:

"options": {
    "cwd": "${workspaceFolder}/yourproject/"
}

所以最终的解决方案是:

tasks.json

{
    "label": "watch",
    "command": "dotnet",
    "type": "process",
    "args": [
        "watch",
        "run",
        "${workspaceFolder}/yourproject/yourproject.csproj",
        "/property:GenerateFullPaths=true",
        "/consoleloggerparameters:NoSummary"
    ],
    "problemMatcher": "$msCompile",
    "options": {
        "cwd": "${workspaceFolder}/yourproject/"
    }
}

launch.json

{
    "name": ".NET Core Launch (web)",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "watch",
    "program": "${workspaceFolder}/yourproject/bin/Debug/net5.0/yourproject.dll",
    "args": [],
    "cwd": "${workspaceFolder}/yourproject",
    "stopAtEntry": false
}

答案 1 :(得分:0)

是的,这完全有可能。

在VS Code中,打开您的tasks.json,该文件应位于.vscode文件夹中。 在其中应该找到一个任务数组。

最简单的方法是简单地添加“监视”来编辑构建任务:

"tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "build",
                "${workspaceFolder}/delete.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
 ]

由于“ build”是默认任务,因此在按F5键并进行startig调试时,它将始终在调试时启动dotnet start build。重点是将watch添加到a​​rgs数组中。

如果要为此执行一项专用任务,可以在task.json中添加一个:

{
    "label": "watch",
    "command": "dotnet",
    "type": "process",
    "args": [
        "watch",
        "run",
        "${workspaceFolder}/delete.csproj",
        "/property:GenerateFullPaths=true",
        "/consoleloggerparameters:NoSummary"
    ],
    "problemMatcher": "$msCompile"
}

然后在您的launch.json中,可以将此任务设置为preLaunchTask:

"configurations": [
    {
        "name": ".NET Core Launch (console)",
        "type": "coreclr",
        "request": "launch",
        "preLaunchTask": "watch", 
        "program": "${workspaceFolder}/bin/Debug/netcoreapp3.0/delete.dll",
        "args": [],
        "cwd": "${workspaceFolder}",
        "console": "internalConsole",
        "stopAtEntry": false
    }
]

我使用dotnet new console创建了一个小型测试项目以在本地进行尝试,因此创建了delete.dll文件名。请根据需要进行修改。