如何像开发者命令提示符一样配置VS Code shell?

How to configure the VS Code shell like the developer command prompt?

我正在尝试设置一个任务来在 Visual Studio 代码中编译我的 C++ 代码。我无法让它工作...但是当我打开开发人员命令提示符并将其粘贴进去时,它吐出的命令工作得很好。

我已经设法将这个问题缩小到没有在 VS Code 使用的 shell 中设置正确的环境变量(如 运行 echo %INCLUDE% 刚刚返回所证明的那样%INCLUDE%).

现在我不完全知道开发人员命令提示符与 VS Code 使用的普通 Powershell 终端有何不同,所以我不知道如何配置它(除了 运行 vcvarsall.bat), 但即使我可以,每次我在 VS Code 中打开一个新终端时,环境变量都会再次重置。

本质上,我能看到的解决这个问题的方法是:

  1. 运行 vcvarsall.bat 在每个构建任务之前。

    不幸的是,我不够熟悉,不知道如何使用 tasks.json 配置文件连续执行多个命令。

  2. 配置VS Code使用的shell默认类似于Developer Command Prompt

    不幸的是,我什至不知道从哪里开始。我可以轻松地将用于 cmd 或 PowerShell 的 shell 设置为 Developer Command Prompt,但我也找不到在哪里配置其环境变量,也不知道 [=13= 的全部效果] 所以我知道要设置哪些变量。

如果有更简单的方法来实现我所追求的目标,我会很高兴听到。尽管如此,归结为我想知道如何以一种允许我从 IDE.

内部编译代码的方式配置 VS Code

经过一番摸索,我找到了答案。我的设置(在 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 中一个接一个地执行多个命令。

对我不起作用,但有助于找到有效的解决方案。

使用任务类型 "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
        }
      }
    ]
  }

您可以通过以下方式在 tasks.json 中创建新的任务类型:

{
  "version": "2.0.0",
  "windows": {
    "options": {
      "shell": {
        "executable": "cmd.exe",
        "args": [
          "/C",
          // The path to VsDevCmd.bat depends on the version of Visual Studio you have installed.
          "\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/Tools/VsDevCmd.bat\"",
          "&&"
        ]
      }
    }
  },
  "tasks": [
    {
      "type": "shell",
      "label": "cl.exe build active file",
      "command": "cl.exe",
      "args": [
        "/Zi",
        "/EHsc",
        "/Fe:",
        "${fileDirname}\${fileBasenameNoExtension}.exe",
        "${file}"
      ],
      "problemMatcher": ["$msCompile"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

不要忘记将任务类型更改为 "shell"

请注意,构建将在几秒延迟后开始。

看这里:https://code.visualstudio.com/docs/cpp/config-msvc#_run-vs-code-outside-the-developer-command-prompt