Visual studio 2017 Visual Studio 2017中的vsvars32.bat 由于VisualStudio安装程序是VisualStudio 2017版本中的新版本,所以我无法定位VisualC++组件。p>

Visual studio 2017 Visual Studio 2017中的vsvars32.bat 由于VisualStudio安装程序是VisualStudio 2017版本中的新版本,所以我无法定位VisualC++组件。p>,visual-studio-2017,Visual Studio 2017,如何在VS2017中获取vsvars32.bat?VS2017的安装路径选择严重受损。他们所做的最愚蠢的事情就是将版本名称(专业、企业,可能是社区)作为路径的一部分。这使得很难从一台机器到另一台机器可靠地找到工具 我认为有一个环境变量可以解决这个问题,VSAPPIDDIR变量存储安装IDE的文件夹(devenv.exe)的路径。因此,如果您想从构建事件运行vcvars32.bat,那么您可以使用 call "%vsappiddir%..\..\VC\Auxiliary\Build\vcva

如何在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"
但从您的链接判断,您实际上想要运行editbin.exe实用程序:

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

14.10.25017的版本号也不是什么乐趣,也没有真正的洞察到从一个更新到下一个更新将如何改变。它可能会改变。

提到的解决方案对我都不起作用。在从“vsvars32.bat”开始预热我的头脑之后“错误-我检查了每一行,发现太多的“svcutil.exe”丢失

我想把它修好,结果成功了。我在计算机中获得了SvcUtil.exe的以下路径:

C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\Bin

为了以防万一,我在系统环境变量中设置了路径并重新启动了VisualStudio,它成功了

希望这对别人有帮助

编辑: 非常奇怪-当我启用“轻量级解决方案加载”时,它就可以工作了。一旦我禁用“轻量级解决方案加载”-它开始给我同样的错误

只需将“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新安装程序一起安装的其他产品(从)

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

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

您可以找到几个使用示例

至于剧本,第一部分是相关的

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(-15.0版)的安装路径,并设置名为INSTALLPATH的变量

应该注意的是,在32位操作系统上,应该使用%programfiles%而不是%programfiles(x86)%

因此,脚本将保存当前目录以供以后检索

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

如果一切顺利,您现在可以使用一个成熟的VisualStudio开发环境


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

Microsoft将VS2017中的vcvars32.bat更改为VsDevCmd.bat

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


$(DevEnvDir)\..\Tools\VsDevCmd.bat“

而且成功了!

编辑: 在VisualStudio15.9中,路径发生了变化(正如Fütemire所说) 在评论中),所以我不得不改变:
$(DevEnvDir)\..\Tools\VsDevCmd.bat“

致:
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat

*可以创建环境变量来存储路径。在VisualStudio 2017(安装了Unc+C++构建工具)中,我找不到已经定义的.< /p>< p>。在生成后的事件中,我这样做也是为了检查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)"
)
)

或者,您可以使用该实用程序查找“appdir”。刚刚安装VS 2017,但未定义%VSAPPIDDIR%。Bummer.Fyi:如果您正在查找editbin.exe,您将在名为VC++2017 v141 Toolset(x86,x64)的visual studio安装程序包中找到它,“使版本名称(专业、企业、可能社区)成为路径的一部分”-即允许多个版本在同一台机器上共存。以前,这是不可能的,因为路径相同-它们以不可预测的方式彼此中断。@Vera:变量%VSAPPIDDIR%不是系统环境变量,仅当脚本被称为
PreBuildEvent
时才可用@Hans:这似乎相当于通过VisualStudio构建时设置的
set-DEVENVDIR=%~5
DEVENVDIR,但从命令行构建时不设置。如果从命令行构建,则只需使用“开始”菜单中提供的快捷方式运行vsdevcmd.bat即可。简单的方法。仅当您需要在生成事件中执行此操作时,它才比较复杂。您能否解释一下
SvcUtil.exe
或其路径如何帮助查找
vsvars32.bat
?我