vsvars32.murciélago en Visual Studio 2017


Como el instalador de Visual Studio es nuevo desde la versión de Visual Studio 2017, no puedo localizar el componente de Visual C++, explicado aquí.

¿Cómo procedo a obtener el vsvars32.bat en VS2017?

Author: Community, 2017-03-15

5 answers

VS2017 sufre de opciones de ubicación de ruta de instalación con daños cerebrales muy graves. Lo más estúpido que hicieron fue hacer que el nombre de la edición (Professional, Enterprise, probablemente Community) fuera parte del camino. Esto hace que sea muy difícil encontrar herramientas de forma fiable de una máquina a otra.

Hay una variable de entorno que creo que puede resolver el problema, la variable VSAPPIDDIR almacena la ruta a la carpeta donde está instalado el IDE (devenv.exe). Así que si quieres para ejecutar vcvars32.bat de un evento de compilación entonces usarías

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

Tenga en cuenta que es vc, no vs, vsvars32.bat ya no existe. Usted podría favorecer el " Desarrollador Símbolo del sistema:

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

Pero a juzgar por tu enlace, realmente quieres ejecutar el editbin.utilidad exe:

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

El número de versión 14.10.25017 tampoco es ninguna alegría, ni una idea real de cómo va a cambiar de una actualización a la siguiente. Probablemente lo hará.

 30
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 12:26:07

Sé que la pregunta está (bien) respondida, pero me gustaría compartir cómo resolví el problema con la esperanza de que ayude a la gente buscando en Google una solución

@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.

Una pequeña explicación del script anterior.

vswhere.exe es un ejecutable nativo de un solo archivo que puede descargar o redistribuir con sus entornos de compilación e implementación para localizar Visual Studio u otros productos instalados con el nuevo instalador de Visual Studio 2017 (desde vswhere wiki)

Comenzando con Visual Studio 15.2 (Vista previa 26418.1) vswhere.exe se instala en %ProgramFiles (x86) %\Microsoft Visual Studio \ Installer (utilice% ProgramFiles % en un programa de 32 bits anterior a Windows 10). Esta es una ubicación fija que se mantendrá (como se indica aquí)

Esto permite a los desarrolladores consultar varias características importantes de una instalación de Visual Studio 2017 (y superior). Además, la herramienta fue diseñada para permitir diferentes sabores de Visual Studio (Community Edition, Professional,...) para ser instalado en la misma máquina.

Puede encontrar varios ejemplos de uso aquí.

En cuanto al guión, la primera parte relevante

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
)

Consulta vswhere para la ruta de instalación de Visual Studio 2017 (-versión 15.0) y establece una variable llamada INSTALLPATH.

Debe tenerse en cuenta que en un sistema operativo de 32 bits, debe usar %programfiles% en lugar de %programfiles(x86)%.

Debido a esto cuestión, el script guarda el directorio actual para su posterior recuperación.

El script procede a probar el contenido de la variable INSTALLPATH. Si la variable no está vacía, añade "Common7\Tools\VsDevCmd.bat " (que es un bien conocido camino relativo donde se pueden encontrar herramientas de desarrollo para la instalación correspondiente de Visual Studio). De lo contrario, el script salta a un mensaje de error y sale (puede optar por devolver un error distinto de cero codificar).

Si todo salió bien, ahora tiene un entorno de desarrollo de Visual Studio completo a su disposición.

El script ahora procede a recuperar el directorio original y ejecutar algo, en este caso una llamada ficticia a svcutil.

 9
Author: jamars,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-05 18:24:57

Simplemente cambia "vsvars32.bat " to " vsdevcmd.bate". Esto es compatible al menos de vuelta a VS2015.

call "$(DevEnvDir)..\tools\vsdevcmd.bat"
editbin /largeaddressaware "$(TargetPath)"
 8
Author: flatline,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 17:54:34

Ninguna de las soluciones mencionadas funcionó para mí. Después de calentarme la cabeza desde el " vsvars32.murciélago falta "error - Fui a través de cada línea y no había demasiado' svcutil.exe había desaparecido.

Pensé en arreglar eso y funcionó. Tengo el siguiente camino en mi máquina para SvcUtil.exe:

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

Establecí la ruta en la variable de entorno del sistema y reinicié mi Visual Studio por si acaso y trabajar.

Espero que esto ayude a alguien!

Editar: Muy extraño-funciona cuando tengo" Lightweight solution load " habilitado. Tan pronto I'ml deshabilitar "Carga de solución ligera" - comienza a darme el mismo error!

 0
Author: Sunny Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-18 14:17:16

Uso vcvars32.bat in pré-build (project properties- > build events), así que para mí, he cambiado:
"$(DevEnvDir)..\..\VC\bin\vcvars32.bat"
a
$(DevEnvDir)\..\Tools\VsDevCmd.bat"
y funcionó!

 0
Author: fsbflavio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-04 21:26:02