vscode tasks.json 中的进程和 shell 有什么区别

What's the difference between process and shell in vscode tasks.json

Tasks in Visual Studio Code 自定义任务 部分描述了任务的属性。有一个 type 属性 定义任务类型:

type: The task's type. For a custom task, this can either be shell or process. If shell is specified, the command is interpreted as a shell command (for example: bash, cmd, or PowerShell). If process is specified, the command is interpreted as a process to execute.

我不明白它们之间有什么不同。无论我选择shell还是process,执行结果都是一样的

那么interpreted as a shell commandcommand is interpreted as a process to execute有什么区别真正的意思?

shell 命令只能在 shell 中 运行 例如 DIR 用于 cmdif 用于 bash.所以当你想要运行shell命令时,你必须使用"type": "shell"设置为运行才正确。如果您只想 运行 一个程序,例如 .bat.sh.exe,那么您可以只使用 "type": "process" 设置。

好吧,我最近遇到了一个问题,我最终通过将类型从“process”更改为“shell”来解决这个问题,我认为这可能对您有所帮助: 我正在尝试 运行 多个 .cpp 文件,并且我在 args 中使用了一个通配符:“${fileDirname}/.cpp”。当类型为 process 时,我无法成功 运行 项目,因为它总是告诉我:“*.cpp”:没有这样的文件或目录,当我更改为“shell”时,一切顺利。这可能是“进程”和“shell”之间的差异之一。