2009-02-18 7 views
10

Actualmente estoy escribiendo un script de implementación en MSBUILD, y después de la descarga de varias extensiones, me he encontrado buscando en el fichero de construcción y el pensamiento:¿Qué sentido tiene MSBUILD/NANT si solo va a escribir el código de procedimiento? ¿Powershell no es mejor?

¿Cuál fue la razón para hacer esto en MSBUILD?

Este script de implementación es completamente procedimiento: dejar de página web, borrar carpetas, copiar archivos, cambiar permisos, empezar página web, etc. No hay cosas de la dependencia de fantasía que yo supongo que es el dominio natural de herramientas como MSBUILD, y NANT HACER.

La única razón por la que puedo ver el uso de MSBUILD es que viene de serie, y es fácil poner las extensiones en su SVN para que 'funcione'.

El problema es que tengo que pasar todo este tiempo trabajando en cómo hacer "cosas básicas" en MSBUILD (localizar extensiones, resolver la sintaxis) que sería trivial (aunque más detallado) en Powershell o incluso en la línea de comandos .

Resumiendo: ¿Son las tareas de procedimiento adecuadas para MSBUILD o es mejor usar algo como Powershell?

Respuesta

8

MSBuild no es un lenguaje de script y no debe ser utilizado como tal. Es casi desafortunado que MSBuild tenga una extensibilidad tan rica y sea lo suficientemente flexible como para usarse prácticamente para cualquier cosa. Use las herramientas más apropiadas para la tarea, si pasa demasiado tiempo creando una funcionalidad demasiado limitada y de baja calidad en comparación con lo que podría crear con otra tecnología, debe cambiar.

+0

lo marcaré como la respuesta ya que es la misma conclusión a la que llegué: use MSBUILD para compilar sln/proj, pero no caiga en la trampa de usar extensiones MSBUILD para todo ... en su mayoría sin sentido – Schneider

3

Realmente depende de su situación. Sin embargo, si dependiera de mí y estuviera usando Visual Studio, diría que sí, quédese con MSBuild por el bien de la integración.

Por otro lado, elegiría MSBUILD, ya que si bien las tareas son muy de procedimiento, le da la flexibilidad de extender este proceso de compilación más tarde para manejar tareas más complejas.

+1

¿No utilizaría algo como Powershell para tener más flexibilidad para extender el proceso? – Schneider

1

msbuild viene con .NET. Debe agregar PowerShell a los servidores/los usuarios deben agregarlo, al menos a través de Windows XP, servidor 2003. Eso puede o no ser un problema en su entorno.

No creo que las tareas de procedimiento sean adecuadas para escribir en MSBUILD, simplemente porque cuanto más corto sea el msbuild, mejor en lo que a mí respecta. Podría usar msbuild para llamarlos, pero probablemente escribiría una biblioteca de extensión para implementarlos.

0

Creo que depende de cómo fluya su versión y el proceso de implementación, ya que marchitarse tiene sentido usar una extensión MSBuild o ejecutar power-shell. MSBuild permite la flexibilidad para manejar todos los pasos del proceso en un flujo de ejecución autónomo.

Si necesita que todo ocurra al mismo tiempo, MSBuild le da control sobre los 'Eventos' u objetivos que pueden anularse para cumplir con sus requisitos.

Si el requisito es desplegar sus artefactos después de compilar el código, entonces MSBuild es adecuado para hacerlo ya que puede usar el objetivo 'AfterBuild' que se activa durante una ejecución estándar de MSBuild. Puede hacer que tu proceso sea autónomo.

Powershell no puede construir su código. Tendría que llamar a MSBuild desde tu script. Para mí, es cuestión de tener su construcción y despliegue autónomos y, por lo tanto, estar mejor organizados.

MSBuild es la plataforma y el motor de compilación de Microsoft.

Cuestiones relacionadas