如何像开发人员命令提示符一样配置 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?的主要内容,如果未能解决你的问题,请参考以下文章

4. VS Code创建flutter项目

VS Code的golang开发配置 之 代码提示

如何通过命令提示符打开 VS Code?

如何用vs2013开发人员命令提示工具执行一个方法(一个简单的demo)

如何像 Android Studio 一样显示 VS 代码弹出工具提示?

从 Azure DevOps 管道启动适用于 VS 2019 的开发人员 PowerShell