ROS Package Variable
Visual Studio Code provides ROS package variable substitution to be used in launch.json and tasks.json.
One of the variables allows the result of a command to be used with the following syntax: ${command:commandID}
This extension provides a ROS package variable give a result based on the current file and the workspace path
extension.rosPackageName : The ROS package name of the current file. 
We can give an extension command arguments with input variables,
but for single numeric arguments putting the argument in the command name is simpler.
Usage
An example launch.json :
{
  "version": "0.2.0",
  "configurations": [
    "name": "cppdbg: ROS run active package",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceFolder}/devel/lib/${input:rosPackageName}/${input:rosPackageName}_node",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "setupCommands": [
        {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }
    ]
  ],
  "inputs": [
    {
      "id": "rosPackageName",
      "type": "command",
      "command": "extention.rosPackageName",
      "args":{}
    }
  ]
}
An example tasks.json :
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [{
            "label": "catkin build active package",
            "type": "shell",
            "command": "catkin build ${command:extension.rosPackageName}",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
You can use a Tasks to see the value of a variable substitution.