Pregunta

Tengo una biblioteca de tareas de MSBuild personalizados que he edición con bastante regularidad, refactorización de código, la adición de nuevas tareas y la eliminación de los viejos, los difuntos. Se ha convertido en un dolor de editar el archivo .Targets de sincronía con lo que realmente está en la biblioteca, así que me preguntaba, ¿cuál sería la mejor manera de automatizar este?

Me gustaría una solución que corre detrás de la biblioteca ha construido con éxito, por lo que no consigo los errores desagradables cuando se trata de llamar a mis tareas personalizadas de otros proyectos.

Tengo algunas ideas sobre cómo hacer esto, pero me gustaría ver lo que otros vienen con la primera. : -)

¿Fue útil?

Solución 2

Bueno, he encontrado una manera más agradable para lograr esto mediante el uso MSBuild Comunidad de tareas 's TaskSchema tarea:

<TaskSchema Assemblies="@(MyTaskAssembly)" 
            OutputPath="%(MyTaskAssembly.RootDir)%(MyTaskAssembly.Directory)" 
            CreateTaskList="true"
            IgnoreMsBuildSchema="true"
            Includes="Microsoft.Build.Commontypes.xsd"/>

Simplemente asegurar que he importado el archivo MSBuild.Community.Tasks.Targets, crear una ItemGroup llamado MyTaskAssembly que contiene todos mis montajes de tareas (Escándalo), luego se adhieren a la llamada tarea anterior en el objetivo AfterBuild de mi proyecto. ¡Dulce! :)

Otros consejos

Se puede tener un archivo .targets separado que contenga solamente las referencias a sus tareas. De un lado vincularlo en su archivo principal .targets. Desde el otro sobrescritura que ejecutar alguna otra tarea personalizada "maestro" en su objetivo AfterBuild de la solución de tareas. Esta tarea "maestro" obtendrá todas las clases que implementan ITask del conjunto de nueva construcción y escribirlos en el archivo .targets.
Pero para ser honesto, esto se parece a una exageración para mí. Usted tiene que editar el archivo .targets de todos modos para obtener el uso de sus nuevas tareas. La escritura de estas tareas un "maestro" y el apoyo que puede tomar más tiempo.

Me puede fantasear en varias soluciones más automatizadas, pero las consideraciones de "tiempo invertido" / "tiempo ahorrado debido a la automatización" detener el vuelo de mi imaginación. =)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top