Visual studio code isShellCommand属性实际上做什么?您应该如何使用它? isShellCommand属性实际上做什么?您应该如何使用它?
悬停时的描述显示: “指定该命令是shell命令还是外部程序。如果省略,则默认为false” 在本例中,他们提到: “我们希望在shell中运行gulp命令(与直接执行它的代码相比),因此我们使用了isShellCommand” 那么shell命令和外部程序之间有什么区别呢? 使用ISSHELLCOMAND=false运行是否意味着vsCode将不会“直接执行它”,这意味着它将运行“命令”,并且不会侦听来自它的任何输出(因为它是作为外部命令运行的?),这反过来意味着我们不能使用问题匹配器 或者,如果设置isShellCommand=true,是否意味着vscode正在“直接执行它”,并将跟踪它并侦听生成的输出,以便我们可以使用问题匹配器等与vscode集成 考虑以下使用tsc编译typescript项目的示例:Visual studio code isShellCommand属性实际上做什么?您应该如何使用它? isShellCommand属性实际上做什么?您应该如何使用它?,visual-studio-code,Visual Studio Code,悬停时的描述显示: “指定该命令是shell命令还是外部程序。如果省略,则默认为false” 在本例中,他们提到: “我们希望在shell中运行gulp命令(与直接执行它的代码相比),因此我们使用了isShellCommand” 那么shell命令和外部程序之间有什么区别呢? 使用ISSHELLCOMAND=false运行是否意味着vsCode将不会“直接执行它”,这意味着它将运行“命令”,并且不会侦听来自它的任何输出(因为它是作为外部命令运行的?),这反过来意味着我们不能使用问题匹配器 或者,
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;