2009-10-26 16 views
5

Usamos Make para compilar nuestro producto, que incluye, C, C++, Java y un montón de otros bits y piezas. Tanto como sea posible, tenemos todas las herramientas necesarias para compilar todo controlado en el control de origen, eliminar las dependencias locales y garantizar la coherencia entre las máquinas de desarrollo.Sistema de compilación independiente para proyectos de Visual Studio

Recientemente hemos agregado algunos componentes escritos en C# utilizando Visual Studio y nos gustaría adoptar un enfoque similar con las soluciones de Visual Studio. Destruir al devenv no es una buena opción. Llamar al csc.exe directamente (como lo he hecho antes de usar Nant) requeriría hacer un seguimiento de las dependencias de archivos en el script de compilación, que prefiero dejar que la solución de Visual Studio lo haga.

MSBuild parece una buena apuesta, aunque su ubicación predeterminada en %windir%\Microsoft.NET\Framework\[version]\ me preocupa la variabilidad entre las máquinas, tanto con la [versión] en el camino y el hecho de que verá tanto "Framework" como "Framework64" directorios. No me importaría tener un requisito de que todos los desarrolladores tengan instalada la versión .NET Framework, pero me preocupa que su v3.5 no sea la misma que la mía.

¿Alguien tiene una solución a esto que les gusta? ¿Intentó algo que realmente no le gustó?

Respuesta

6

MSBuild es sin duda la opción de menor fricción. Las diferentes versiones de fx no son un gran problema en tiempo de compilación: si está utilizando algo importante de una versión de fx superior a la que está instalada, no se compilará. En el último lugar en el que estuve, construimos un enorme sistema de compilación multi-entorno con NAnt como base, y se enganchó a MSBuild con las tareas de MSntuild de NAnt. MSBuild está bien por sí solo si solo estás haciendo cosas de MS, pero teníamos un montón de cosas que MSBuild no soportaba de forma nativa, de ahí el contenedor NAnt.

+0

Gracias a todos por las respuestas. - Eric –

+0

¿Qué es la "versión fx"? –

0

MSBuild es la herramienta adecuada para este trabajo. Simplemente haga coincidir su versión de framework con la versión del framework incluido con el Visual Studio que está usando.

De 32 bits frente a 64 bits no debería importar, no creo - Estoy bastante seguro de que las ediciones de 32 bits y de 64 bits de Csc.exe pueden compilarse en forma cruzada con la otra plataforma. El archivo de proyecto MSBuild (*. * Proj XML file) debe contener todo lo que MSBuild necesita para compilar su aplicación.

1

Estoy de acuerdo con todos los demás. Para hacerlo más fácil, solo haga que vsvars.bat (el archivo de proceso por lotes que es el símbolo del sistema de Visual Studio) sea parte de su script de compilación, y entonces MSBuild simplemente funcionará.

0

Usamos Nant para conducir msbuild. Si le preocupan las diferentes versiones del marco, especialmente los service packs, use FxCop para verificar que no permita que ingresen dependencias inesperadas. Los detalles están en this answer.

Cuestiones relacionadas