VS Code - Presentation属性不适用于构建任务

时间:2018-03-10 19:26:32

标签: terminal visual-studio-code windows-10

我在Windows 10计算机上安装了最新的VS代码。我目前有一个task.json文件设置如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "windows": {
                "command": "${workspaceRoot}\\build.bat"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "panel": "dedicated"
            }
        }
    ]
}

我正在使用此任务来运行包含以下行的build.bat文件:

if not defined DevEnvDir ( call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" )

首次执行终端时,应该只调用“vcvars64.bat”。

问题是“面板”:“专用”选项,根据docs,应该重复使用每个构建的相同终端实例,因此只调用一次vcvars64.bat。但是每次构建时,每次调用vcvars64.bat。当我只是从常规的外部cmd终端构建时,或者当我从VS Code的内部终端构建时(使用cmd),在构建后续时间时,一切都按预期工作。只有在尝试运行任务时才会出现此问题。谁知道问题是什么?

1 个答案:

答案 0 :(得分:2)

我认为文档中的含糊不清。如果您看到intellisense,则会明确指出Panel专门用于构建任务,而不是在该面板内运行的终端

我已使用简单命令验证:"(env | grep -i NAME) && export NAME=TARUN"

如果是linux / mac环境,你可以尝试使用2构建任务,保持一个活着接收指令,构建任务使用命名管道发送指令。如下面的链接

所述

https://www.linuxquestions.org/questions/linux-newbie-8/%5Bbash%5D-send-command-to-another-terminal-831313/

他们使用的bash脚本是

#!/bin/bash

PIPE=/tmp/catpipe
trap "rm -f $PIPE" exit 1
[[ ! -p $PIPE ]] && mkfifo $PIPE

while true; do
     while read line; do
          case "$line" in
               @exit) rm -f $PIPE && exit 0;;
               @*) eval "${line#@}" ;;
               * ) echo "$line" ;;
          esac
     done <$PIPE
done

exit 2

然后另一个bash可以将命令发送到该管道。但不幸的是,我在Windows CMD中看不到管道。