vsvars32.bat 在 Visual Studio 2017

vsvars32.bat in Visual Studio 2017

由于 Visual Studio 安装程序是 Visual Studio 2017 版的新安装程序,我找不到 Visual C++ 组件,解释说

如何在 VS2017 中获取 vsvars32.bat

VS2017安装路径位置选择严重脑残。他们所做的最该死的蠢事是将版本名称(专业版、企业版,可能是社区版)作为路径的一部分。这使得很难从一台机器可靠地找到工具回到另一台机器。

有一个环境变量我觉得可以解决问题,VSAPPIDDIR变量存放的是IDE安装文件夹的路径(devenv.exe)。所以如果你想从构建事件中 运行 vcvars32.bat 那么你会使用

   call "%vsappiddir%..\..\VC\Auxiliary\Build\vcvars32.bat" x86

注意是vc,不是vs,vsvars32.bat已经不存在了。您可能会喜欢“开发人员命令提示符:

   call "%vsappiddir%..\tools\vsdevcmd.bat"

但是从您的 link 来看,您实际上想要 运行 editbin.exe 实用程序:

   "%vsappiddir%..\..\VC\Tools\MSVC.10.25017\bin\HostX86\x86\editbin.exe" args...

14.10.25017 版本号也没有任何乐趣,没有真正了解从一个更新到下一个更新将如何变化。应该会吧。

None 提到的解决方案对我有用。在从 "vsvars32.bat missing" 错误中恢复过来之后 - 我遍历了每一行,并且 'svcutil.exe' 也不见了。

我想过解决这个问题,结果成功了。 SvcUtil.exe:

我的机器中有以下路径

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

我在系统环境变量中设置了路径并重新启动了我的 Visual Studio 以防万一并且它起作用了。

希望这对某人有所帮助!

编辑: 非常奇怪 - 它在我启用 "Lightweight solution load" 时有效。一旦我禁用 "Lightweight Solution Load" - 它开始给我同样的错误!

只需将 "vsvars32.bat" 更改为 "vsdevcmd.bat"。这至少兼容 VS2015。

call "$(DevEnvDir)..\tools\vsdevcmd.bat"
editbin /largeaddressaware "$(TargetPath)"

我知道这个问题得到了很好的回答,但我想分享一下我是如何解决这个问题的,希望它能帮助人们 谷歌搜索 寻找解决方案

@echo off

set INSTALLPATH=

if exist "%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" (
  for /F "tokens=* USEBACKQ" %%F in (`"%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version 15.0 -property installationPath`) do set INSTALLPATH=%%F
)

echo INSTALLPATH is "%INSTALLPATH%"

REM Save current dir for later
pushd %CD%

if NOT "" == "%INSTALLPATH%" (
  call "%INSTALLPATH%\Common7\Tools\VsDevCmd.bat"
) else (
  goto ERROR_NO_VS15
)

:WORK
REM Retrieve the working dir and proceed
popd
echo Doing work in %CD%
svcutil this_is_just_an_example
goto END

:ERROR_NO_VS15
echo Visual Studio 2017 Tools Not Available!

:END
echo Processing ends.

上面脚本的小解释。

vswhere.exe 是一个单文件、本机可执行文件,您可以下载或与您的构建和部署环境一起重新分发以找到 Visual Studio 或已安装的其他产品使用 Visual Studio 2017 的新安装程序(来自 vswhere wiki

从 Visual Studio 15.2(26418.1 预览版)开始 vswhere.exe 安装在 %ProgramFiles(x86)%\Microsoft Visual Studio\Installer(在 32 位程序中使用 %ProgramFiles%在 Windows 10) 之前。这是将要维护的固定位置(如前所述here

这允许开发人员查询 Visual Studio 2017(及更高版本)安装的几个重要功能。此外,该工具旨在允许在同一台机器上安装 Visual Studio 的不同 flavors(社区版、专业版...)。

您可以找到几个用法示例 here

关于脚本,第一相关部分

if exist "%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" (
  for /F "tokens=* USEBACKQ" %%F in (`"%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version 15.0 -property installationPath`) do set INSTALLPATH=%%F
)

查询vswhere Visual Studio 2017(-version 15.0)的安装路径并设置一个名为INSTALLPATH的变量。

需要注意的是,在 32 位 OS 上,您应该使用 %programfiles% 而不是 %programfiles(x86)%。

由于这个 issue,脚本保存当前目录供以后检索。

脚本然后继续测试 INSTALLPATH 变量的内容。如果变量不是 empty,它会附加 "Common7\Tools\VsDevCmd.bat" 到它(这是一个 众所周知的 可以找到开发工具的相对路径用于相应的 Visual Studio 安装)。否则,脚本会跳转到错误消息并退出(您可以选择 return 非零错误代码)。

如果一切顺利,您现在拥有一个完整的 Visual Studio 开发环境供您使用。

脚本现在继续检索 原始 目录并执行某些操作,在本例中是对 svcutil.[=16 的虚拟调用=]

Microsoft 在 VS 2017 link

中将 vcvars32.bat 更改为 VsDevCmd.bat

我在预构建(项目属性->构建事件)中使用vcvars32.bat,所以对我来说,我改变了:
"$(DevEnvDir)..\..\VC\bin\vcvars32.bat"

$(DevEnvDir)\..\Tools\VsDevCmd.bat"
它成功了!

编辑: 在 Visual Studio 15.9 中,路径发生了变化(正如 Fütemire 所说 在评论中),所以我不得不改变:
$(DevEnvDir)\..\Tools\VsDevCmd.bat"
到:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\Tools\VsDevCmd.bat

*您可以创建一个环境变量来存储路径。我找不到已经定义的。

在 Visual Studio 2017 年(安装了 inkl.C++ 构建工具)我在 post 构建事件中以这种方式执行此操作以检查 x86:

if not $(PlatformName) == x64 (
if exist "$(DevEnvDir)..\tools\vsdevcmd.bat" (
echo setting largeaddressaware to get 4gb access in 32 bit

call "$(DevEnvDir)..\tools\vsdevcmd.bat"
editbin /largeaddressaware "$(TargetPath)"
)
)