Programación Generar un archivo personalizado MSBuild .Targets
-
27-09-2019 - |
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. : -)
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. =)