如何像开发人员命令提示符一样配置VS代码shell? 我试图建立一个任务,用于编译VisualStudio代码中的C++代码。我不能让它工作。。。但是当我打开开发人员命令提示符并粘贴它时,它发出的命令工作得非常好

如何像开发人员命令提示符一样配置VS代码shell? 我试图建立一个任务,用于编译VisualStudio代码中的C++代码。我不能让它工作。。。但是当我打开开发人员命令提示符并粘贴它时,它发出的命令工作得非常好,shell,visual-studio-code,environment-variables,cl,Shell,Visual Studio Code,Environment Variables,Cl,我已经设法将这个问题缩小到VS代码正在使用的shell中没有设置正确的环境变量(运行echo%INCLUDE%只是返回%INCLUDE%就证明了这一点) 现在我不知道开发者命令提示符与VS代码使用的普通Powershell终端有什么不同,所以我也不知道如何配置它(除了运行vcvvarsall.bat),但即使可以,每次我在VS代码中打开一个新终端时,环境变量都会再次重置自己 基本上,我所看到的解决这个问题的办法是: 在每个构建任务之前运行vcvvarsall.bat 不幸的是,我不太熟悉如何使用

我已经设法将这个问题缩小到VS代码正在使用的shell中没有设置正确的环境变量(运行echo%INCLUDE%只是返回%INCLUDE%就证明了这一点)

现在我不知道开发者命令提示符与VS代码使用的普通Powershell终端有什么不同,所以我也不知道如何配置它(除了运行vcvvarsall.bat),但即使可以,每次我在VS代码中打开一个新终端时,环境变量都会再次重置自己

基本上,我所看到的解决这个问题的办法是:

  • 在每个构建任务之前运行
    vcvvarsall.bat

    不幸的是,我不太熟悉如何使用
    tasks.json
    配置文件在一行中执行多个命令

  • 默认情况下,将VS代码使用的shell配置为类似于开发人员命令提示符

    不幸的是,我甚至不知道从哪里开始。我可以轻松地将shell设置为cmd或PowerShell,但不能设置为开发者命令提示符,也找不到在何处配置其环境变量,也不知道
    vcvarsall.bat
    的全部效果是什么,因此我知道要设置哪些变量


  • 如果有一个更简单的方法来实现我的目标,我会很高兴听到它。不管怎样,归根结底,我想知道如何配置VS代码,使我能够从IDE内部编译代码。

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

    对我来说不起作用,但有助于找到一个可行的解决方案

    使用任务类型
    “进程”
    ,然后将命令设置为开发人员命令提示符调用的批处理文件,将直接启动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
            }
          }
        ]
      }