是否可以编写修改 tasks.json 和 launch.json 的 VS Code 扩展?

Is it possible to write VS Code extension that modifies tasks.json and launch.json?

我想创建自己的扩展,为调试器 (launch.json) 和一组预定义的任务 (tasks.json) 提供预定义的配置。

现在我在这 2 个文件中配置了 vs 代码,但是在许多地方有很多硬代码,这些硬代码会因不同的项目而异。所以理想情况下我想要一个插件,例如读取一个配置文件并将所有这些东西应用到 "tasks.json" 和 "launch.json".

想知道是否可以使用 vs 代码扩展 API。

我认为您可以使用 settings.json 中定义的变量来做到这一点。您可以在 settings.json(用户或工作区设置)中定义自己的自定义设置:

{
  "editor.formatOnSave": false,  // normal settings defined by the editor and plugins
  "foo.bar": "baz" // custom setting
}

然后您可以在 tasks.jsonlaunch.json 中引用此设置,使用字符串插值作为 "${config.foo.bar}"

我不确定这是在哪里记录的,但我在 https://github.com/Microsoft/vscode/pull/11291

中找到了对此的引用

更新:

我在 https://github.com/boyvinall/vscode-c-dbg 创建了一个测试仓库。当我在 tasks.json 中调用 "run" 任务时,我得到以下输出:

通过 launch.json 使用我当前的配置似乎不适用于 "gdb" 配置,尽管 "cppdbg" 配置似乎工作正常:

注意,如果它很重要,我是 运行 vscode v1.8.1

Visual Studio Code:1.15.1

settings.json (.vscode文件夹当前目录)

{
"foo.bar": "baz" // custom setting 
}

launch.json(示例)

{
"program": "${workspaceRoot}/${config:foo.bar}.exe"
}

我四处寻找发现了它。但它已经过时了,正试图弄清楚。直到助手 visual studio 代码提示在鼠标 hover/over 字符串时给了我信息。

"${config.foo.bar}"

不起作用。

"${config:foo.bar}"

有效。