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)"
)
)
由于 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)"
)
)