Visual studio code isShellCommand属性实际上做什么?您应该如何使用它? isShellCommand属性实际上做什么?您应该如何使用它?

Visual studio code isShellCommand属性实际上做什么?您应该如何使用它? isShellCommand属性实际上做什么?您应该如何使用它?,visual-studio-code,Visual Studio Code,悬停时的描述显示: “指定该命令是shell命令还是外部程序。如果省略,则默认为false” 在本例中,他们提到: “我们希望在shell中运行gulp命令(与直接执行它的代码相比),因此我们使用了isShellCommand” 那么shell命令和外部程序之间有什么区别呢? 使用ISSHELLCOMAND=false运行是否意味着vsCode将不会“直接执行它”,这意味着它将运行“命令”,并且不会侦听来自它的任何输出(因为它是作为外部命令运行的?),这反过来意味着我们不能使用问题匹配器 或者,

悬停时的描述显示:

“指定该命令是shell命令还是外部程序。如果省略,则默认为false”

在本例中,他们提到:

“我们希望在shell中运行gulp命令(与直接执行它的代码相比),因此我们使用了isShellCommand”

那么shell命令和外部程序之间有什么区别呢? 使用ISSHELLCOMAND=false运行是否意味着vsCode将不会“直接执行它”,这意味着它将运行“命令”,并且不会侦听来自它的任何输出(因为它是作为外部命令运行的?),这反过来意味着我们不能使用问题匹配器

或者,如果设置isShellCommand=true,是否意味着vscode正在“直接执行它”,并将跟踪它并侦听生成的输出,以便我们可以使用问题匹配器等与vscode集成

考虑以下使用tsc编译typescript项目的示例:

c:\Users\J\Code\vscode-project>where tsc

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\tsc.exe
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\tsc.js
C:\Users\J\AppData\Roaming\npm\tsc
C:\Users\J\AppData\Roaming\npm\tsc.cmd
以及下面的task.json

{
    "version": "0.1.0",

    // The command is tsc. Assumes that tsc has been installed using npm install -g typescript
    "command": "tsc",

    // The command is a shell script
    "isShellCommand": false,

    "args": ["-v"],

    "problemMatcher": "$tsc"
}
如果我现在运行该任务,它将输出以下版本:

message TS6029: Version 1.4.0.0
如果我将isShellCommand更改为true,它将输出相同的结果

message TS6029: Version 1.4.0.0
所以我的想法是,如果我改为调用一个外部程序,将isShellCommand设置为true并调用一个.exe文件,它不会给我任何输出,但它会给我

{
    ...
    "command": "tsc.cmd"
    "isShellCommand": true,
}
message TS6029: Version 1.4.0.0
那么在什么情况下应该将isShellCommand设置为true/false? 我一直试图在vsCode文档中找到更多关于这一切的信息,但什么也找不到,所以如果有人能给我指出除此之外的任何资源,我也将非常感激。谢谢

当您想在Visual Studio代码中查看控制台输出时,应该将
的“isShellCommand”=true
设置为true。如果不想在编辑器中看到结果,请将其设置为
false

我不知道为什么它在你的系统上表现不同。也许这是一个应该归档的bug。

找到了我正在寻找的答案:


如果我想查看或禁用输出,我可以使用“showOutput”:“always”或“silent”。或者您是指当前任务的问题匹配器的结果@WosiThis很有帮助,因为它似乎提供了一种从命令shell而不是直接在VSCode中运行多种类型任务的方法。该链接已断开。请注意,ISSHELLCOMAND属性已被弃用,因为vs code 1.14-将具有“type”的shell属性改为“shell”。有关更多更改,请看这里:您不应该使用它,因为它已被Microsoft弃用。
/**
 * Specifies whether the command is a shell command and therefore must
 * be executed in a shell interpreter (e.g. cmd.exe, bash, ...).
 *
 * Defaults to false if omitted.
 */
isShellCommand?: boolean;