Debug Dart at External Terminal

launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Dart",
            "type": "dart",
            "request": "attach",
            "preLaunchTask": "launch",
            "observatoryUri": "http://127.0.0.1:8181"
        }
    ]
}

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "launch",
            "type": "shell",
            "command": "DartLauncher",
            "args": [
                "--enable-vm-service",
                "--pause_isolates_on_start",
                "${file}"
            ]
        }
    ]
}

DartLauncher.cs

using System;
using System.Diagnostics;
using System.Linq;

namespace DartLauncher
{
    class DartLauncher
    {
        [STAThread]
        static void Main(string[] args)
        {
            new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "dart",
                    Arguments = String.Join(" ", args.Select((arg) => "\"" + arg + "\""))
                }
            }.Start();
        }
    }
}