2008-09-06 27 views
20

Simplemente me preguntaba si la gente pensaba que valía la pena aprender a usar la sintaxis de MSBuild para personalizar el proceso de compilación para un proyecto .net, o si realmente no vale la pena dada la facilidad con la que se puede construir un proyecto usando visual estudio.¿Vale la pena aprender a usar MSBuild?

Estoy pensando en términos de compilaciones nocturnas, etc., pero ¿entonces no podría usar un evento programado que use la opción de compilación de línea de comandos integrada en VS? ¿Hay herramientas superiores por ahí?

Respuesta

14

@kronoz
Yo diría que SÍ.
Lo bueno de MSBuild es que si modifica sus archivos csproj para incluir pasos de compilación personalizados, esos pasos se realizarán desde VS o desde MSBuild. Además, si alguna vez tiene un servidor de compilación, no necesitará instalar un VS completo, solo el SDK para construir sus proyectos.

2

MSBuild es increíblemente fácil de usar, se puede usar VS para gestionar los proyectos y archivos de solución y simplemente pasar el SLN a MSBuild.

6

Parece que es un desarrollador único que trabaja en su propio sitio. Si este es el caso, no es necesario en absoluto, pero es una buena idea que aprenda como parte de su experiencia profesional.

La construcción automatizada de proyectos se vuelve más necesaria a medida que aumenta el número de desarrolladores que trabajan en un proyecto. Es muy fácil para dos desarrolladores escribir código incompatible que se romperá cuando se combine (imagine que estoy llamando a una función foo (int x), y cambie la firma para ser foo (int x, int y): cuando combina nuestras bases de código, el código se romperá.

Estos tipos de errores aumentan en complejidad y problemas con la cantidad de tiempo entre compilaciones de integración. Al configurar las compilaciones nocturnas, o incluso las compilaciones que ocurren cada check-in, estos problemas se reducen en gran medida. Esta práctica es prácticamente estándar de la industria en proyectos con múltiples desarrolladores.

Así que ahora, para responder a su pregunta: esta es una habilidad que abarcará proyectos y empresas. Debe aprender a ampliar sus conocimientos y habilidades como desarrollador, y para agregar una línea importante en y nuestro currículum.

0

Construir desde la línea de comandos con MSBuild es relativamente fácil de aprender. Comience abriendo un Símbolo del sistema de Visual Studio y ejecutando msbuild /?. Simplemente lea la ayuda una vez y luego decida más adelante si desea obtener más información.

Escribir archivos de proyecto es un poco más complicado. La mayoría de las personas no necesitan aprenderlo, porque puede hacer la mayoría de las cosas en Visual Studio. Sin embargo, también es bastante poderoso para ciertos problemas.

En el pasado utilicé MSBuild como lenguaje de scripting, combinado con muchas tareas personalizadas. MSBuild tiene una fantástica compatibilidad con el registro + administración integrada de dependencias. Sin embargo, no es un lenguaje fácil de aprender. PowerShell es una opción mucho mejor.

12

MSBuild vale la pena el tiempo para aprender. Después de la curva de aprendizaje inicial (que en realidad puede ser muy pronunciada), es bastante fácil realizar los pasos de automatización de compilación más comunes.

  • asambleas de construcción en modo de lanzamiento
  • la firma de ensamblados con nombre seguro
  • unidad de ejecución de pruebas
  • modificar archivos XML/Web.config-s sobre la marcha
  • modificar el número de versión de los montajes
  • validación de FxCop/StyleCop, etc ...
  • despliegue automatizado - crear bases de datos SQL, sitios web de IIS, servicios de Windows, etc ...
2

En un escenario como el suyo, donde todavía no tiene un sistema de compilación, entonces sí, MSBuild vale la pena. No solo puedes usarlo para una variedad de tareas previas y posteriores a la construcción (ver la respuesta de Jicko Petiov), sino que también puedes integrarlo bien en un entorno de integración continua (como CruiseControl).

Un escenario en el que no valdría la pena es cuando ya tiene instalado un sistema de compilación automatizado/con guiones. Por ejemplo, yo mismo no me he tomado el tiempo con MSBuild porque he estado usando NAnt para esta tarea desde antes de que MSBuild existiera ...

6

MSBuild definitivamente vale la pena aprender para cualquier persona que escriba software .NET. La razón por la que un servidor de compilación para aplicaciones .NET ya no requiere la instalación de Visual Studio (como lo mencionó Andrew Burns) es porque MSBuild ahora forma parte de .NET Framework.

Conocer MSBuild le dará una gran flexibilidad para elegir las tecnologías que utiliza para implementar la integración continua. Como me tomé el tiempo para aprender MSBuild, pude cambiar el sistema de CI que uno de nuestros equipos usaba de CruiseControl.NET a TeamCity sin mucha dificultad. Esos servidores de CI, o algo así como FinalBuilder (con el que no estoy familiarizado), son mejores opciones para realizar compilaciones nocturnas que una tarea programada. Aprender a implementar tareas personalizadas de MSBuild le dará aún más flexibilidad en la implementación de compilaciones personalizadas. Jivko Petiov enumeró una serie de tareas que facilita MSBuild. En el caso de la implementación y configuración de bases de datos, he escrito scripts que hacen esto en MSBuild, y hace que el proceso de desarrollo y prueba sea mucho más fácil.

Si Visual Studio Team System está en su futuro, las aplicaciones creadas con MSBuild serán mucho más fáciles de mover en ese entorno que las creadas por medios alternativos.

Hay muchos recursos disponibles para ayudarlo a comenzar con MSBuild. Comenzaría con Inside the Microsoft Build Engine. Uno de los coautores también tiene un montón de cosas en la web, incluidos this site, y project on CodePlex.

0

@kronoz Yo diría que SÍ. Lo bueno de acerca de MSBuild es que si modifica sus archivos csproj para incluir los pasos de compilación personalizados , entonces esos pasos ocurrirán desde VS o desde MSBuild. Además, si alguna vez tiene un servidor de compilación , no necesitará instalar VS completo, solo el SDK para compilar sus proyectos .

==> Esto no es del todo cierto. Por ejemplo, construir un proyecto de instalación en un servidor de compilación requerirá la instalación de Visual Studio.

0

Si se desarrolla en.taller neto, hace digno de aprendiendo.
He integrado nuestro proceso de compilación con Jenkins, originalmente Hudson. Como se mencionó anteriormente, MSbuild tiene una curva de aprendizaje empinada. Sin embargo, una vez que capte los fundamentos, puede comenzar a personalizar la compilación. mi impresión hasta ahora - podría ser ingenua, grueso de la secuencia de comandos se consiste en

<PropertyGroup> 
    <PropertyKey>value</PropertyKey> 
</PropertyGroup> 
<ItemGroup> 
    <ItemListKey>List values<ItemListKey> 
</ItemGroup> 
<Task Source="" Target="" /> 
 
    Besides using for build, I successfully used MSBuild to create a module that manages 
    configuration files such as web.config and foo.exe.config files. 
    it is a hybrid module that consists of .net console app, MSBuild script and batch file. 
    what this module does is that during a project upgrade, it will create a XML transform  
    template with connection strings, endpoints and appSettings from old configuration 
    files. 
    after the project has been upgraded, the module will transform newly deployed 
    configuration 
    files without affecting any new entries. if you have dozens of configuration files this 
    is very effective.