【发布时间】:2015-10-22 12:51:43
【问题描述】:
isShellCommand 属性的实际作用是什么?应该如何使用它?
悬停时的描述是:
"指定命令是shell命令还是外部程序。如果省略则默认为false"
在https://code.visualstudio.com/Docs/editor/tasks 中,他们在示例中提到它:
“我们想在 shell 中运行 gulp 命令(VS Code 直接执行它)所以我们使用了 isShellCommand”
那么shell命令和外部程序有什么区别呢?
使用 isShellCommand = 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 文档中找到有关所有这些的更多信息,但找不到任何东西,所以如果有人能指出我除了 https://code.visualstudio.com/Docs 之外的任何资源,我也将非常感激。谢谢
【问题讨论】:
-
请注意 isShellCommand 属性自 vs 代码 1.14 以来已被弃用 - 将带有 "type": "shell" 的 shell 属性放到您的任务中。如需更多更改,请查看此处:code.visualstudio.com/updates/v1_14
-
您不应该使用它,因为它已被 Microsoft 弃用。