由于Visual Studio 2017安装程序是Visual Studio 2017版本的新增功能,因此无法找到Visual C ++组件,解释为here。
如何在VS2017中获取vsvars32.bat
?
答案 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)"
)
)