【发布时间】:2021-06-25 02:07:24
【问题描述】:
有没有办法将输入变量嵌套在其他变量中,尤其是${workspaceFolder}?以 .code-workspace 文件为例:
{
"folders": [
{
"name": "Client",
"path": "path/to/client/code"
},
{
"name": "Server",
"path": "path/to/server/code"
},
{
"name": "Shared",
"path": "path/to/shared/code"
}
],
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "apphere"
}
],
"inputs": [
{
"id": "pickProject",
"type": "pickString",
"description": "Select a project:",
"options": [
"Client",
"Server"
]
}
]
}
}
所有项目(本例中的客户端和服务器)将共享相同的启动配置,唯一需要更改的是 cwd 值。不幸的是,当您收到此错误时,您不能直接在多文件夹工作区中使用 ${workspaceFolder}:
变量 ${workspaceFolder} 无法在多文件夹工作区中解析。使用 ':' 和工作区文件夹名称限定此变量的范围。
如果能够做这样的事情,那就完美了:
"cwd": "${workspaceFolder:${input:pickProject}}"
不幸的是,这不起作用。还有其他方法可以为 workspaceFolder 变量提供动态范围吗?
我确实想出了一种相当老套的方法来处理这个问题,尽管感觉应该有更好的方法:如果将 pickString 输入选项更改为文件夹路径,然后将调试 cwd 更改为 "cwd": "${workspaceFolder:Shared}/../../../${input:pickProject}",则可以任意选择其中一个文件夹,遍历到根工作区目录,然后将 ${input:pickProject} 变量附加到末尾。除了目录遍历之外,您看到的调试选项将是“path/to/client/code”和“path/to/server/code”,而不是更干净的“Client”和“Server”。但至少它似乎确实有效,尽管不是太理想。
【问题讨论】: