2010-07-21 7 views
5

Mucha gente nueva en CI (Integración continua) instala VS (Visual Studio) en su servidor de CI "porque es necesario compilar el código". MSTest es una referencia común que se menciona aquí.¿Por qué no debo instalar Visual Studio en mi servidor CI?

¿Por qué no debería instalar VS (o en general, cualquier software que no esté listo para usar) en mi servidor CI?

(Al parecer, esta pregunta no se ha formulado anteriormente, por lo que la añado como referencia. Si ya existe, lo siento, me la perdí, fusione. Si no se responde a esta pregunta dentro de un tiempo, agregar uno yo mismo)

+1

@Carl - no * that * evil =) MSBuild está disponible en el SDK de Microsoft Windows, que está disponible de forma gratuita. –

Respuesta

6

Porque no necesita. Una licencia de Visual Studio es bastante costosa, por lo que tener una simplemente en un servidor donde nadie la usa es solo un desperdicio. Hay un par de argumentos por los cuales aún necesitaría instalar una instancia completa de Visual Studio en su Integración Continua. servidor - pero aquí están sus argumentos de contador:

Motivo 1: Lo necesito para compilar.
Realidad: No, no es así. Necesita MSBuild para compilar, pero eso es available for free, en el SDK de Windows. Tenga en cuenta que hay varias versiones para diferentes sistemas operativos y versiones de .NET, así que tenga cuidado de descargar la correcta.

Motivo 2: Lo necesito para hacer correcciones rápidas en el servidor.
Realidad: No, no es así. Usted no debe hacer correcciones rápidas en el servidor; debe verificar desde su sistema de control de versiones, hacer la corrección, construir y ejecutar pruebas localmente hasta que funcione, registrarse y hacer que el sistema CI haga el resto por usted. Es por eso que tiene un sistema de CI.

Razón 3: Sin Visual Studio, no puedo correr sin MSTest mi servidor CI.
Realidad: Incorrecta. AFAIK, el corredor MSTest también es parte del SDK (al menos eso es lo que parece en nuestro servidor CI aquí, aunque no puedo verificarlo ya que no tenemos ninguna prueba en este momento ...). Sin embargo, un google rápido encontró this blog post que explica cómo hacerlo sin el SDK también. No lo he leído en detalle, así que no puedo prometerle que funcione o que sea legal. Usted ha sido advertido.

Siéntase libre de agregar más razones en los comentarios, y las voy a contrarrestar.

+0

¿podría agregar MSTest? – mafu

+0

@mafutrct: ver mi actualización. –

+0

Agradable :) Todavía me falta que cambiar el entorno a algo no estándar (la instalación de VS cambia algunas variables de entorno, agrega archivos DLL, ...) lleva a un entorno diferente del usuario final, posiblemente causando problemas (por ejemplo , DLL en el servidor de CI, pero no en el cuadro del usuario). Esto necesita ser elaborado un poco por supuesto, no soy un experto en este tema en absoluto. – mafu

7

Es posible que tenga que instalar Visual Studio de todos modos, de practicidad

que iba a tratar de refutar la respuesta aceptada, publicado por @TomasLycken, en los comentarios, pero se encontró que necesitaba más espacio para hablar. Aunque estoy técnicamente de acuerdo con lo que @TomasLycken ha afirmado, aquí, enumeraré algunas de las dependencias que encuentro difíciles de instalar en mi servidor CI - y dejo que usted decida qué correcto es la respuesta aceptada ...

1 - 'mshtml' ensamblado de interoperabilidad primario

Se puede ver el problema que estaba recibiendo en mi resultado de generación en this S.O. question creé y respondió. Eso sí, pasé varias horas averiguando cómo obtener el PIA deseado registrado, y fue el resultado de ejecutar algunos .exe en el servidor que venía de mi V.Estudio de instalación - hmmmmmm

CONTEXTO: tenía un proyecto Win Forms que utiliza el control de explorador Web .. y en caso de que el 'WebDocumentCompleted', me echo la DomDocument a hshtml.IHTMLDocument2 .. y es por eso que tenía una referencia a Microsoft.mshtml en mi proyecto.

RESULTADO: Ahora @TomasLycken sugiere que me ocupo de esto al arreglar mi código. Al principio, quería preguntar por esta sugerencia. Mi código está implementado y funcionando! Pero, cuando hago una búsqueda web, I see that Microsoft doesn't really recommend using their mshtml PIA outside of the Visual Studio environment they developed it for.

Las 10 líneas de código ofensivas estaban efectivamente haciendo un pequeño raspado de datos en pantalla en nombre de nuestros usuarios que investigan sobre temas técnicos en varios portales web conocidos. Pero, cuando probé este código, escrito en 2009, parece que el DOM que una vez manipuló ha cambiado en 2016. Sé que impactante. Probablemente no sea mi código más inteligente. Probablemente sea el momento de retirar esta función; en otras palabras, , corrija el código y vuelva a enmendarlo.

@TomasLyken Creo que está justo en este caso.

2 - Win Forms guión Proyecto posterior a la generación

CONTEXTO: Así que había llegado a través de este cool post-build technique on S.O. que permite mi archivo app.config en mi proyecto WinForms que someterse a una transformación de TXD similar a la forma los archivos web.config de mis proyectos web se transforman. Bueno, simplemente funciona OOTB, por así decirlo, si copias desde S.O. y en el archivo fuente .csproj o .vbproj. Pero, una vez que poner todo esto en un servidor de compilación sin Visual Studio, la pieza fundamental falla debido a una dependencia en:

$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets 

Ahora bien, esto es suficiente para rectificar straightfoward .. He copiado al servidor IC mi directorio C:\Program Files (x86)\MSBuild\Microsoft. Pero, ¿debería? Como me salí un poco de la reserva de lo que Visual Studio normalmente soportaría ... se podría argumentar que la respuesta aceptada de @TomasLycken sigue siendo correcta en este punto también.

3 - El simple hecho de todos los marcos .NET y multi-diana paquetes en su lugar

Los puntos 1 y 2 anteriores, fueron en realidad los últimos cosas vencí en mi intento de conseguir mi primer trabajo de construcción correr. Y mi primer trabajo de compilación es para una pila de soluciones que he creado y mantenido durante los últimos 8 años ... por lo que ha capeado algunos marcos y tendría una textura no trivial. Sabía que no sería fácil. De hecho, esperaba crear un servidor de CI que pudiera construir este .sln, que de hecho estaría listo para construir cualquier otra otra solución que le arrojáramos.

Cuando recibí por primera vez mi limpio servidor "Windows 2012 R2", simplemente me faltaban muchas cosas ... y me pregunto si primero había instalado Visual Studio, si hubiera rectificado algunas de estas cosas directamente ¿apagado?

A continuación se muestra mi sinopsis de lo que tenía que hacer, pero no muestra el dolor y el sufrimiento que implica calcularlo todo y los comienzos falsos. Aunque tal vez ayude a alguien más.

> First, uninstalled 4.6.1 framework 
-- (find Update for Microsoft Windows (KB3102467) and click Uninstall.) 
-- also uninstalled anything from MS labeled with C++ redistributable (a later step will restore these) 

> Then, install Windows 7 SDK (installs critical "reference assemblies" and a proper baseline 4.0 framework) 
-- Then, install Multi-Targeting Pack for Framework 4.0.1 (netfx_401mtpack.exe) 
-- Then, install Multi-Targeting Pack for Framework 4.0.3 (netfx_403mtpack.exe) 

> Then, reinstalled 4.6.1 framework for 2012 R2 (KB3102467) 

> Then, installed Microsoft .NET Framework 4.6.1 Developer Pack (DP461-DevPack-KB3105179-ENU.exe) 

> Then, installed "Visual Studio 2015 Build Tools" (BuildTools_Full.exe) 

> Downloaded a copy of nuget.exe and put it in the C:\Windows directory 

4 - Deshacerse de 'conjunto de reglas que faltan' advertencia MSB3884

De @ de kevinbosman mensaje el this GitHub issues thread

Si no desea editar sus Microsoft.CodeAnalysis.Targets archivo, tenga en cuenta que no es suficiente simplemente copiar la carpeta C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets\ al servidor de compilación.

también es necesario para crear la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\EDev y agregar el valor de cadena StanDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\

5 - Cómo MSTest para funcionar correctamente

  • Necesidad dlls copian en su máquina de construcción, algunos deben registrarse con GAC more info here específicamente:
    • Microsoft.VisualStudio.QualityTools.Resource.dll
    • Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  • Necesita un hervidero de registro de su máquina dev copiado en servidor de compilación
  • algunas advertencias, si quieren para que se vayan, de acuerdo con this Microsoft visual studio help forum requieren una instalación VS 2010 y Feature Pack 2.
Cuestiones relacionadas