我怎样才能得到一个任务来设置一个可以在配置中使用的变量?
How can I get a task to set a variable that can be used in a configuration?
我在 VS Code 中定义了一个任务:
"tasks": [
{
"label": "getcredentials",
"type": "shell",
"command": ".\TestScripts\GetCredentials.ps1"
}
]
GetCredentials.ps1 创建一个凭证并将其分配给 $Global:credential.
在 launch.json 中,我想使用 $Global:credential 作为我正在调试的实际脚本的参数:
"configurations": [
{
"type": "PowerShell",
"request": "launch",
"name": "Exchange Parameter Set, No Inactive",
"preLaunchTask": "getcredentials",
"script": "${file}",
"args": [ "-Credential $Global:credential"],
"cwd": "${file}"
}
]
但是,脚本没有获取 $Global:credential 的值(而是提示输入凭据)。我认为这应该是可能的,因为这个 https://code.visualstudio.com/docs/editor/tasks-appendix 说如果没有指定环境就使用父进程环境。
知道我遗漏了什么,或者这不可能吗?
https://code.visualstudio.com/docs/editor/tasks-appendix 关于任务定义中的可选 env
键的状态:
/**
* The environment of the executed program or shell. If omitted
* the parent process' environment is used.
*/
这与环境变量有关,与PowerShell 会话无关。
此外,所引用的 parent 进程环境是 Visual Studio 自己的环境变量块。
换句话说:
由于 PS task 会话在 PS 调试会话开始时已经退出,您不能在两节课。
即使尝试在 PS 任务会话中设置 环境变量 也不会起作用,因为两个会话都是 运行 VS Code作为父进程,看不到彼此的环境修改。
您最好的选择是使用(临时)文件将值从任务会话传送到调试会话。
请参阅 了解如何在文件中保存和恢复凭据。
警告:仅适用于Windows。
选择任务会话写入的文件位置(在最简单的情况下使用固定名称,例如$HOME/.test-creds.clixml
),然后调试会话从中读取,如下所示:
"args": [ "-Credential (Import-CliXml $HOME/.test-creds.clixml)" ],
我在 VS Code 中定义了一个任务:
"tasks": [
{
"label": "getcredentials",
"type": "shell",
"command": ".\TestScripts\GetCredentials.ps1"
}
]
GetCredentials.ps1 创建一个凭证并将其分配给 $Global:credential.
在 launch.json 中,我想使用 $Global:credential 作为我正在调试的实际脚本的参数:
"configurations": [
{
"type": "PowerShell",
"request": "launch",
"name": "Exchange Parameter Set, No Inactive",
"preLaunchTask": "getcredentials",
"script": "${file}",
"args": [ "-Credential $Global:credential"],
"cwd": "${file}"
}
]
但是,脚本没有获取 $Global:credential 的值(而是提示输入凭据)。我认为这应该是可能的,因为这个 https://code.visualstudio.com/docs/editor/tasks-appendix 说如果没有指定环境就使用父进程环境。
知道我遗漏了什么,或者这不可能吗?
https://code.visualstudio.com/docs/editor/tasks-appendix 关于任务定义中的可选 env
键的状态:
/**
* The environment of the executed program or shell. If omitted
* the parent process' environment is used.
*/
这与环境变量有关,与PowerShell 会话无关。
此外,所引用的 parent 进程环境是 Visual Studio 自己的环境变量块。
换句话说:
由于 PS task 会话在 PS 调试会话开始时已经退出,您不能在两节课。
即使尝试在 PS 任务会话中设置 环境变量 也不会起作用,因为两个会话都是 运行 VS Code作为父进程,看不到彼此的环境修改。
您最好的选择是使用(临时)文件将值从任务会话传送到调试会话。
请参阅
警告:仅适用于Windows。
选择任务会话写入的文件位置(在最简单的情况下使用固定名称,例如$HOME/.test-creds.clixml
),然后调试会话从中读取,如下所示:
"args": [ "-Credential (Import-CliXml $HOME/.test-creds.clixml)" ],