Compile ASP.NET 4.5 sin Visual Studio en Build Server

81

Ha pasado un tiempo desde que configuré un servidor de compilación, así que tal vez haya olvidado algo o tal vez .NET 4.5 sea diferente de la versión con la que hice esto la última vez, pero aquí está mi problema.

Estoy intentando configurar un servidor de compilación para monitorear un repositorio de control de fuente. Siempre que algo cambia, quiero que el servidor extraiga los cambios y cree el proyecto. Si no hay errores, quiero implementar el sitio en un sitio web que se ejecuta en el servidor de compilación.

En el pasado, cuando hice esto, pensé que podía hacerlo teniendo solo .NET instalado, pero cuando intento construir este proyecto, aparece un error que dice "C: \ Archivos de programa \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplications \ Microsoft.WebApplication.targets "falta, y si voy y miro puedo ver que falta. De hecho, no hay archivos de destino de Visual Studio 11.

Después de pensarlo mucho y rascarme la cabeza, salí y obtuve el "SDK de Windows 8 / .NET 4.5" pensando que el SDK de .NET 4.5 podría instalar los archivos de destino que necesitaba, pero no lo hizo a menos que lo instalara mal de alguna manera. .

Entonces, ¿qué necesito poner en el servidor de compilación para que el proyecto se compile? Preferiría no tener que instalar Visual Studio 2012 completo.

Zack
fuente
He estado investigando un poco desde que publiqué esto. Avísame si voy por el camino equivocado. Parece que esto también fue un problema con Visual Studio 2010 y parece que la gente lo resolvió de varias maneras. Uno fue instalar Visual Studio Team Explorer. Lo intenté, pero mi servidor es Win 2008 r1 y VSTE2012 no es compatible. La otra solución que da un poco de miedo es copiar los archivos de destino de otra máquina. Eso me llevó más lejos, pero ahora recibo errores de que faltan mis ensamblajes de referencia, lo que supongo que está relacionado con el problema original. ¿Hay otra manera?
Zack
3
Está en el camino correcto, la manera más fácil de solucionar el problema es instalar VS 2010 en su servidor de compilación. Sin embargo, es un instrumento un poco contundente. La segunda forma sería hacer lo que está haciendo y obtener los objetivos y las dependencias asociadas de otra máquina e implementar solo esos archivos en el servidor. El peligro con este enfoque es que un paquete de servicio VS puede cambiar los archivos que ha copiado y su servidor de compilación usará una versión obsoleta de esos objetivos mientras sus desarrolladores usan las versiones actualizadas.
James Reed
¿Te refieres a VS2012? Si. Lo comprobaré, pero supongo que no es comparable con el servidor win 2008 r1 ya que el Team Explorer 2012 no lo fue, pero lo comprobaré dos veces.
Zack
1
Lo siento, me perdí el bit de 2012, supongo que solo se instalará en el servidor 2008 r2 ya que solo funciona con win 7 en el lado del cliente. ¿Supongo que la actualización del sistema operativo en el servidor de compilación está fuera de discusión?
James Reed
sí, he estado pensando en actualizar el sistema operativo del servidor. Voy a investigarlo, pero no estoy seguro de si se me permitirá hacerlo.
Zack

Respuestas:

35

Mi problema estaba relacionado con la instalación del Kit de desarrollo de software de Windows (SDK) para Windows 8 en una caja de Windows 2008. Si sigue leyendo en la página, llegará a un encabezado con la etiqueta "Herramientas de .NET Framework 4.5 SDK en Windows Vista y Windows Server 2008". Esto te dice que:

  1. Ejecute el instalador de Windows SDK para Windows 8 en un sistema operativo compatible (por ejemplo, Windows 7 o Windows 8).
  2. Elija la siguiente opción en la pantalla Especificar ubicación: Descargue el SDK de Windows para instalarlo en una computadora separada.
  3. Presione el botón Siguiente.
  4. Responda las preguntas de la pantalla Únase al Programa de mejora de la experiencia del cliente (CEIP).
  5. En la siguiente pantalla, elija la función .NET Framework 4.5 Software Development Kit. Anule la selección de todas las demás funciones que se pueden deseleccionar.
  6. Elija el botón Descargar.
  7. Vaya a la ubicación de descarga (especificada en el paso 2) y busque los siguientes archivos del instalador de la herramienta .NET Framework 4.5 SDK: sdk_tools4.msi, sdk_tools4.cab
  8. Puede copiar estos archivos a una computadora con Windows Vista o Windows 2008 Server dentro de su organización. Estos archivos deben copiarse en el mismo directorio en la computadora con Windows Vista o Windows 2008 Server. Nota: No redistribuya estos archivos fuera de su organización o como parte de cualquier otro instalador.
  9. En la computadora con Windows Vista o Windows 2008 Server, revise los términos de la licencia aquí.
  10. Compruebe si .NET Framework 4.5 ya está instalado en la computadora. De lo contrario, descargue e instale .NET Framework 4.5 desde www.microsoft.com.
  11. Abra un símbolo del sistema con privilegios de administrador.
  12. Vaya al directorio donde se copiaron los archivos del instalador de .NET Framework 4.5 SDK Tools.
  13. Instale las herramientas del SDK de .NET Framework 4.5 mediante la línea de comando: Msiexec / i sdk_tools4.msi VSEXTUI = 1
SwampyFox
fuente
Gracias Swampy. Voy a marcar esta respuesta como correcta, pero solo quería mencionar un par de cosas. No voy a probar esto, pero parece que su respuesta podría funcionar. En cambio, solo estamos actualizando el servidor. En segundo lugar, ¿sabe si hacerlo de esta manera hubiera permitido que los componentes se actualicen cuando se lanzan los parches y los paquetes de servicio?
Zack
He seguido estas instrucciones con Server 2008, pero desafortunadamente sigo viendo archivos .nlp y mscorlib se está incluyendo en implementaciones mediante implementación web
Nathan
1
Muchas gracias. Estoy usando Jenkins y acabo de actualizar mi proyecto para usar .NET 4.5. Cuando envié mi trabajo a Jenkins, no se quejó de la versión incorrecta, se quejó de que faltaba el ensamblaje System.Runtime. Prefiero esta solución a la copia manual de archivos porque esta solución es más fácil de automatizar.
Ido Ran
Utilizo Windows Server 2012 y tengo VS2012 en Windows 8 (máquina de desarrollo). Solo necesito objetivos para MsBuild "C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \. SDK incluye mucho más, ¿no?
Kiquenet
84

Para ejecutar en su servidor de CI sin Visual Studio, solo necesita copiar algunas carpetas de una máquina de desarrollo a la misma ubicación en el servidor de CI. No es necesario instalar el SDK.

VS 2015:

  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010:

  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Archivos de programa (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

O, como sugirió Matt , podría copiarlos en un subdirectorio de su proyecto y alterar la <MSBuildExtensionsPath32>ubicación en su archivo MSBuild (normalmente .csprojo .vbproj).

Una vez que haya hecho esto, su proyecto se compilará.

También debe establecer la variable de entorno VisualStudioVersion explícitamente en la versión de Visual Studio (10.0 para VS2010, 11.0 para VS2012, 12.0 para VS2013, 14.0 para VS2015) que está usando solo para asegurarse de que esté bien establecida en su configuración.

NightOwl888
fuente
6
esto resolvió el problema para nosotros +1. Viniendo de maven / java, esto es una locura.
NimChimpsky
¿Ensamblados de referencia no instalados con .NET Framework? Los destinos de MSBuild no. No estoy seguro de los ensamblajes de referencia, creo que sí.
Kiquenet
Copiar C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 desde la máquina del desarrollador a la misma carpeta en la máquina de compilación me funcionó después de que Team City no pudo compilar la solución .NET 4.5, sin embargo, una .NET 4.0 La solución anterior se compiló.
Tore Aurstad
+1 para los conjuntos de referencia. Estoy construyendo un proyecto 4.5.1 usando Teamcity y MSBuild14 y ese era el eslabón que faltaba en mi máquina de agente de compilación.
N. Warfield
este es un problema estúpido, pero una solución simple.
Cori
25

Desde msdn :

El SDK de Windows ya no se envía con un entorno de compilación de línea de comandos completo. Debe instalar un compilador y un entorno de compilación por separado. Si necesita un entorno de desarrollo completo que incluya compiladores y un entorno de compilación, puede descargar Visual Studio 2012 Express, que incluye los componentes adecuados del SDK de Windows.

Para solucionar esto, tuve que copiar la carpeta C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5de mi máquina de desarrollo (que tiene Visual Studio 2012 por cierto) en los agentes de compilación. Después de esta operación, Team City no informó más errores y mscorlib.dll no se envió a la carpeta bin.

Marius
fuente
gracias, esto me lo arregló, sin necesidad de descargar el sdk. (o cualquiera de los pasos en la respuesta aceptada)
Cohen
¡Impresionante, me salvó el día!
Magnus
1
Esta debería ser definitivamente la respuesta aceptada. Mucho más fácil ya que definitivamente ya tiene una máquina con los ensamblajes de referencia.
Josh Kodroff
1
@artfulhacker VS 2012 y Win 8 SDK no se instalan en Win2k8 R1. Si está en R1 como yo, debe copiar los ensamblajes de referencia.
Josh Kodroff
1
Pero no hay ninguna copia de msbuild.exe en este directorio. Instalé VS2012 en mi PC de desarrollo (no en la máquina de compilación) y todavía no veo una versión 4.5.
cenizas999
12

Microsoft Build Tools 2013 ayudará en este caso, como describe su página de descarga:

Si no tiene Visual Studio instalado en su computadora, puede usar Build Tools 2013 para crear aplicaciones administradas. Los compiladores de Visual Basic y C # también se incluyen en esta descarga. (En versiones anteriores, estas herramientas se incluían en .NET Framework independiente).

Rajesh
fuente
1
Un poco más de explicación podría ayudar a los compañeros programadores a comprender cómo funciona el enlace de referencia. Como en el futuro, es posible que el enlace de referencia ya no exista.
NJInamdar
Microsoft Build Tools 2013 para VS 2013 y también VS 2012 ? De todos modos, es mejor instalar Microsoft Build Tools o Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Kiquenet
8

Mi dpto. le gusta adoptar un enfoque minimalista de lo que está instalado en nuestras máquinas de compilación Win 7. Sin embargo, no nos gusta simplemente copiar y pegar archivos / carpetas debido a posibles problemas con las claves de registro. En lugar de instalar VS 2013, instalé los siguientes componentes mucho más pequeños y gratuitos. Ahora el equipo de desarrollo puede crear aplicaciones web de VS 2013 con éxito.

ckkkitty
fuente
Muchas gracias. ¡Siempre me he preguntado cómo conseguirlo Microsoft.WebApplication.targetsy nunca supe de ese caparazón aislado!
William Gross
6

Soluciono este problema con Visual Studio Agents.

Puede intentar instalar Visual Studio Agents 2012.

http://www.microsoft.com/en-us/download/details.aspx?id=38186

Vaquero
fuente
No funciona para VS2013. Instalé el Agente y el Controlador, pero C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 no se creó
Guillaume
1
Los agentes para Visual Studio 2013 también están disponibles, por supuesto, para aquellos que lean esta respuesta con VS 2013 en lugar de VS 2012 en mente.
J0e3gan
2
¡De hecho funciona! Solo necesita instalar Visual Studio 2013 Shell (aislado) (x86) y luego Visual Studio 2013 Shell (integrado) (x86)
Andrii
@Andrii Visual Studio Agents 2012 requiere instalado? ¿O solo Visual Studio 2012 y 2013 Shell (aislado) (x86) y Visual Studio 2012 y 2013 Shell (integrado) (x86) sin instalar VS Agents ?
Kiquenet
Solo conchas. Solo instalé 2013
Andrii