.net - studio - msbuild tools 2017
¿Vale la pena aprender a usar MSBuild? (10)
@kronoz Yo diría SÍ. Lo bueno de MSBuild es que si modificas tus 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.
==> 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.
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 de un proyecto .net, o si realmente no valía la pena dada la facilidad con la que se puede construir un proyecto usando Visual Studio.
Estoy pensando en términos de compilaciones nocturnas, etc., pero ¿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í?
@kronoz
Yo diría que sí.
Lo bueno de MSBuild es que si modificas tus 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.
Bueno, MSBuild está integrado, por lo que si estás haciendo algo simple, entonces sí, se recomienda.
Pero para algo como builds nocturnas, sugeriría FinalBuilder .
Consulte esta pregunta en Herramientas de administración de compilación / configuración.
En un escenario como el tuyo, donde aún no tienes 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 / guionado. 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 ...
MSBuild definitivamente vale la pena aprender para cualquiera que esté escribiendo 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 qué tecnologías utilizará 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 trasladar a ese entorno que aquellas creadas a través de 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, incluido este sitio , y un proyecto en CodePlex .
MSBuild es increíblemente fácil de usar, puede usar VS para administrar los proyectos y archivos de solución y simplemente pasar el SLN a MSBuild.
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.
- ensamblaje de edificios en modo RELEASE
- firmando asambleas con un nombre fuerte
- pruebas de unidad de funcionamiento
- modificando archivos xml / Web.config-s sobre la marcha
- modificando el número de versión de los ensambles
- validando FxCop / StyleCop, etc ...
- Implementación automatizada: cree bases de datos SQL, sitios web de IIS, servicios de Windows, etc.
Parece que eres un desarrollador individual que trabaja en tu 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 se producen en cada check-in, estos problemas se reducen en gran medida. Esta práctica es prácticamente estándar de la industria en todos los proyectos con múltiples desarrolladores.
Así que ahora, para responder a su pregunta: esta es una habilidad que abarcará proyectos y empresas. Debes aprender a ampliar tus conocimientos y habilidades como desarrollador y agregar una línea importante en tu currículum.
Si desarrolla en el taller .net, vale la pena aprender.
He integrado nuestro proceso de construcción con Jenkins, originalmente Hudson. Como se mencionó anteriormente, MSbuild tiene una curva de aprendizaje empinada. Sin embargo, una vez que comprendes los fundamentos, puedes comenzar a personalizar la compilación. mi impresión hasta ahora - podría ser ingenuo, la mayor parte de la secuencia de comandos se compone de
<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.
Construir desde la línea de comando 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 proyectos 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.