Visual Studio 2017中的vsvars32.bat

时间:2017-03-15 09:26:30

标签: visual-studio-2017

由于Visual Studio 2017安装程序是Visual Studio 2017版本的新增功能,因此无法找到Visual C ++组件,解释为here

如何在VS2017中获取vsvars32.bat

6 个答案:

答案 0 :(得分:43)

VS2017遭受非常严重的脑损坏安装路径位置选择。他们所做的最愚蠢的事情就是让版本名称(Professional,Enterprise,可能是Community)成为路径的一部分。这使得很难从一台机器到另一台机器可靠地找到工具。

有一个环境变量我认为可以解决问题,VSAPPIDDIR变量存储了安装IDE的文件夹的路径(devenv.exe)。因此,如果您想从构建事件中运行vcvars32.bat,那么您可以使用

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

请注意,它是vc,而不是vs,vsvars32.bat不再存在。你可能会赞成" Developer Command Prompt:

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

但是从您的链接判断,您实际上想要运行editbin.exe实用程序:

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

14.10.25017的版本号也没有任何乐趣,也没有真正了解如何从一个更新更改为下一个更新。它可能会。

答案 1 :(得分:14)

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

@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 2017新安装程序一起安装的Visual Studio或其他产品(来自vswhere wiki

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

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

您可以找到几个用法示例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位操作系统上,您应该使用%programfiles%而不是%programfiles(x86)%。

由于此issue,脚本会保存当前目录以供日后检索。

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

如果一切顺利,您现在可以使用完整的Visual Studio开发环境。

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

答案 2 :(得分:12)

只需将“vsvars32.bat”更改为“vsdevcmd.bat”即可。这至少与VS2015兼容。

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

答案 3 :(得分:3)

Microsoft在VS 2017中将vcvars32.bat更改为VsDevCmd.bat link

我在pré-build (项目属性 - >构建事件)中使用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 Studio\2017\Community\Common7\Tools\VsDevCmd.bat

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

答案 4 :(得分:0)

所提到的解决方案都不适合我。让我的头部从" vsvars32.bat失踪"错误 - 我经历了每一行,并且还有' svcutil.exe'失踪了。

我想要解决这个问题并且有效。我在我的机器中为SvcUtil.exe获得了以下路径:

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

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

希望这有助于某人!

修改 非常奇怪 - 当我有"轻量级解决方案负载"启用。我很快就会禁用"轻量级解决方案负载" - 它开始给我同样的错误!

答案 5 :(得分:0)

在Visual Studio 2017(已安装inkl。C ++生成工具)中,我在生成后事件中以这种方式进行此操作以检查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)"
)
)