¿Cómo puedo instalar la versión VS2017 de msbuild en un servidor de compilación sin instalar el IDE?

204

Históricamente, esto se ha hecho con las herramientas de compilación de Microsoft . Pero parece que las herramientas de compilación pueden no estar disponibles para versiones posteriores a 2015 . El reemplazo parece ser las herramientas de compilación de Visual Studio, que todavía no parecen tener una página de inicio real.

Descargué el instalador VS2017 Professional y fui a la pestaña Componentes individuales . De inmediato, el resumen me dice que el editor principal de Visual Studio está allí, ocupando 753 MB. No quiero el editor. Solo msbuild. No hay forma de anular la selección del editor.

¿Hay alguna forma de instalar la última versión de msbuild sin instalar también el IDE de Visual Studio?

rianjs
fuente
Posible duplicado de la tarea de compilación TFS 2015 para VS 2017
Richard
13
Esa pregunta está redactada con un mal título que oculta la pregunta real. No apareció en una búsqueda. Su respuesta es un enlace y ejecutar, lo cual es malo. El número de visitas es bajo, y es "más nuevo" que este de una manera que no importará en un día, y mucho menos el próximo año. Así que seguro, es un "duplicado" en el peor sentido posible.
rianjs
1
No estoy de acuerdo con la sugerencia de un duplicado. Encontré estas preguntas y respuestas SO como resultado principal de mi búsqueda de: "cómo instalar msbuild 2017 en el servidor de compilación", y la respuesta principal responde a mi necesidad con precisión. Después de leer el duplicado sugerido, esa respuesta es un nivel completo más detallado sobre los problemas que se trasladan de una versión a otra; esa publicación SO no responde la pregunta que busqué.
qxotk

Respuestas:

309

Las herramientas de compilación de Visual Studio son una descarga diferente que el IDE. Parecen ser un subconjunto bastante pequeño, y se llaman Build Tools for Visual Studio 2019 ( descargar ).

Puede usar la GUI para hacer la instalación, o puede escribir la instalación de msbuild:

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.MSBuildTools --quiet

Microsoft.VisualStudio.Workload.MSBuildTools es una ID de "envoltura" para los tres subcomponentes que necesita :

  • Microsoft.Component.MSBuild
  • Microsoft.VisualStudio.Component.CoreBuildTools
  • Microsoft.VisualStudio.Component.Roslyn.Compiler

Puede encontrar documentación sobre los otros conmutadores CLI disponibles aquí .

La instalación de las herramientas de compilación es mucho más rápida que el IDE completo. En mi prueba, tardó 5-10 segundos. Con --quietno hay ningún indicador de progreso que no sea un breve cambio de cursor. Si la instalación fue exitosa, debería poder ver las herramientas de compilación en %programfiles(x86)%\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin.

Si no los ve allí, intente ejecutar sin --quietver ningún mensaje de error que pueda ocurrir durante la instalación.

rianjs
fuente
1
El directorio mencionado anteriormente definitivamente no se crea. He eliminado la --quietbandera con un resultado idéntico, excepto por una ventana modal que aparece un poco antes de desaparecer.
Itamaram
1
Echaría un vistazo al Visor de eventos de Windows para ver si hay algún mensaje de registro sobre por qué falló la instalación. Y luego corríjalos o haga una nueva pregunta que sea específica para su problema.
rianjs
66
Además, no use el --quietmodo si está compilando aplicaciones web ASP.net en su servidor de compilación, ya que querrá seleccionar "Herramientas de compilación de desarrollo web" durante el asistente de instalación para que se instalen los objetivos MSBuild correctos.
cwills
34
Parece que en lugar de herramientas de compilación, el enlace se refiere a vs comunidad. Aquí está el enlace de buildtools
lorond el
2
@IamCP: para copiar el entorno de instalación de VS2017 en una máquina local: cd G: \ ISO; . \ vs_Professional.exe --layout G: \ ISO \ VS2017ProOffline --lang es-ES; . \ vs_BuildTools.exe --layout G: \ ISO \ VS2017BuildToolsOffline --lang es-ES; Luego puede copiar a su objetivo fuera de línea.
Michel de Becdelièvre