我在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),在构建后续时间时,一切都按预期工作。只有在尝试运行任务时才会出现此问题。谁知道问题是什么?
答案 0 :(得分:2)
我认为文档中的含糊不清。如果您看到intellisense,则会明确指出Panel专门用于构建任务,而不是在该面板内运行的终端
我已使用简单命令验证:"(env | grep -i NAME) && export NAME=TARUN"
如果是linux / mac环境,你可以尝试使用2构建任务,保持一个活着接收指令,构建任务使用命名管道发送指令。如下面的链接
所述他们使用的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中看不到管道。