如何像开发人员命令提示符一样配置 VS Code shell?
Posted
技术标签:
【中文标题】如何像开发人员命令提示符一样配置 VS Code shell?【英文标题】:How to configure the VS Code shell like the developer command prompt? 【发布时间】:2020-03-04 16:57:37 【问题描述】:我正在尝试设置一个任务来在 Visual Studio Code 中编译我的 C++ 代码。我无法让它工作......但是当我打开开发人员命令提示符并将其粘贴时,它吐出的命令工作得很好。
我已设法将此问题缩小到未在 VS Code 使用的 shell 中设置的正确环境变量(如运行 echo %INCLUDE%
仅返回 %INCLUDE%
所证明的那样)。
现在我不完全知道开发人员命令提示符与 VS Code 使用的普通 Powershell 终端有何不同,所以我不知道如何配置它(除了运行 vcvarsall.bat
),但即使我可以,每次我在 VS Code 中打开一个新终端时,环境变量都会再次重置。
本质上,我看到的这个问题的解决方案是:
在每个构建任务之前运行vcvarsall.bat
。
不幸的是,我不够熟悉,不知道如何使用tasks.json
配置文件连续执行多个命令。
将 VS Code 使用的 shell 默认配置为类似于开发者命令提示符。
不幸的是,我什至不知道从哪里开始。我可以轻松地将 shell 设置为 cmd 或 PowerShell,但不能设置为开发人员命令提示符,而且我也找不到配置其环境变量的位置,也不知道 vcvarsall.bat
的全部效果是什么,所以我知道哪个要设置的变量。
如果有更简单的方法来实现我所追求的目标,我会很高兴听到它。不管怎样,归根结底是我想知道如何配置 VS Code,以使我能够从 IDE 内部编译我的代码。
【问题讨论】:
【参考方案1】:经过一番摸索,我找到了答案。我的设置(tasks.json
)现在如下:
"command": "&",
"args": [
"'D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat';",
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"$fileDirname\\$fileBasenameNoExtension.exe",
"$file"
]
使用&
,您可以执行包含空格的路径。这导致我的vcvars32.bat
(其他人的位置可能不同)设置正确的变量而无需手动输入它们。 ;
允许您在 PowerShell 中一个接一个地执行多个命令。
【讨论】:
【参考方案2】:accepted answer 对我不起作用,但有助于找到可行的解决方案。
使用任务类型"process"
,然后将命令设置为由开发者命令提示符调用的批处理文件直接启动windows命令提示符(而不是通过powershell调用它)。
第一个参数是"&"
,这意味着编译器将在开发人员命令提示符上下文中被调用,而不是仅仅作为参数传递给批处理文件。
>
"version": "2.0.0",
"tasks": [
"type": "process",
"label": "cl.exe build active file",
"command": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat",
"args": [
"&"
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"$fileDirname\\$fileBasenameNoExtension.exe",
"$file"
],
"problemMatcher": ["$msCompile"],
"group":
"kind": "build",
"isDefault": true
]
【讨论】:
以上是关于如何像开发人员命令提示符一样配置 VS Code shell?的主要内容,如果未能解决你的问题,请参考以下文章
如何用vs2013开发人员命令提示工具执行一个方法(一个简单的demo)