isShellCommand 属性 的实际作用是什么?您应该如何使用它?
What does the isShellCommand property actually do and how should you use it?
isShellCommand 属性 的实际作用是什么?您应该如何使用它?
悬停时的描述是:
"Specifies whether the command is a shell command or an external programm. Defaults to false if omitted"
在 https://code.visualstudio.com/Docs/editor/tasks 中,他们在示例中提到了它:
"We want to run the gulp command in a shell (VS Code directly executing it) so we used isShellCommand"
那么 shell 命令与外部程序有什么区别?
运行 isShellCommand = false 是否意味着 vsCode 不会 "directly executing it" 意味着它将 运行 "command" 并且不听任何它的输出(因为它 运行 它是一个外部命令?)这反过来意味着我们不能使用问题匹配器。
或者如果设置 isShellCommand = true 是否意味着 vscode 是 "directly executing it" 并且会跟踪它并监听生成的输出以便我们可以使用问题匹配器等与 vsCode?
考虑以下使用 tsc 编译 typescript 项目的示例:
c:\Users\J\Code\vscode-project>where tsc
C:\Program Files (x86)\Microsoft SDKs\TypeScript.4\tsc.exe
C:\Program Files (x86)\Microsoft SDKs\TypeScript.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 文档中找到有关所有这些的更多信息,但找不到任何东西,所以如果有人能指出 https://code.visualstudio.com/Docs 之外的任何资源,我也将非常感激。谢谢
当您想在 Visual Studio 代码中看到控制台输出时,您应该设置 "isShellCommand" = true
。如果您不想在编辑器中看到结果,请将其设置为 false
。
我不知道为什么它在您的系统上表现不同。也许这是一个应该提交的错误 here。
找到了我正在寻找的答案:https://github.com/Microsoft/vscode-docs/blob/master/docs/editor/tasks_appendix.md
/**
* 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;
isShellCommand 属性 的实际作用是什么?您应该如何使用它?
悬停时的描述是:
"Specifies whether the command is a shell command or an external programm. Defaults to false if omitted"
在 https://code.visualstudio.com/Docs/editor/tasks 中,他们在示例中提到了它:
"We want to run the gulp command in a shell (VS Code directly executing it) so we used isShellCommand"
那么 shell 命令与外部程序有什么区别?
运行 isShellCommand = false 是否意味着 vsCode 不会 "directly executing it" 意味着它将 运行 "command" 并且不听任何它的输出(因为它 运行 它是一个外部命令?)这反过来意味着我们不能使用问题匹配器。
或者如果设置 isShellCommand = true 是否意味着 vscode 是 "directly executing it" 并且会跟踪它并监听生成的输出以便我们可以使用问题匹配器等与 vsCode?
考虑以下使用 tsc 编译 typescript 项目的示例:
c:\Users\J\Code\vscode-project>where tsc
C:\Program Files (x86)\Microsoft SDKs\TypeScript.4\tsc.exe
C:\Program Files (x86)\Microsoft SDKs\TypeScript.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 文档中找到有关所有这些的更多信息,但找不到任何东西,所以如果有人能指出 https://code.visualstudio.com/Docs 之外的任何资源,我也将非常感激。谢谢
当您想在 Visual Studio 代码中看到控制台输出时,您应该设置 "isShellCommand" = true
。如果您不想在编辑器中看到结果,请将其设置为 false
。
我不知道为什么它在您的系统上表现不同。也许这是一个应该提交的错误 here。
找到了我正在寻找的答案:https://github.com/Microsoft/vscode-docs/blob/master/docs/editor/tasks_appendix.md
/**
* 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;