Question

J'ai une bibliothèque de tâches MSBuild personnalisées qui je modifier assez régulièrement, refactorisation de code, l'ajout de nouvelles tâches et la suppression des anciennes, défunte. Il est devenu une douleur pour modifier le fichier .targets pour la synchronisation avec ce qui est en fait dans la bibliothèque, donc je me demandais, quelle serait la meilleure façon d'automatiser cela?

Je voudrais une solution qui court après la bibliothèque a construit avec succès, de sorte que je ne reçois pas d'erreurs désagréables lorsque vous essayez d'appeler mes tâches personnalisées à partir d'autres projets.

J'ai quelques idées sur la façon de le faire, mais je voudrais voir ce que les autres viennent en premier lieu. : -)

Était-ce utile?

La solution 2

Eh bien, je l'ai trouvé un moyen plus agréable de le faire en utilisant MSBuild Communauté Tâche 's TaskSchema tâche:

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

J'assurer simplement que j'ai importé le fichier MSBuild.Community.Tasks.Targets, créez un nom ItemGroup MyTaskAssembly contenant tous mes ensembles de travail (de Shocker), puis coller l'appel de tâche ci-dessus dans la cible de AfterBuild de mon projet. Sucré! :)

Autres conseils

Vous pouvez avoir un fichier .targets distinct contenant uniquement des références à vos tâches. D'un côté le lien dans votre fichier principal .targets. De l'autre écraser l'exécution une autre tâche personnalisée « maître » dans votre objectif de AfterBuild de la solution des tâches. Cette tâche « maître » obtiendra toutes les classes de mise en œuvre de ITask nouvellement construit assemblage et les écrire dans le fichier .targets.
Mais pour être honnête, ce qui ressemble à un surpuissant pour moi. Vous devez modifier votre fichier .targets de toute façon à obtenir l'utilisation de vos nouvelles tâches. Rédaction d'une tâche « maître » et le soutien qu'il peut vous prendre plus de temps.

peut fantasmer sur plusieurs solutions plus automatisées, mais les considérations de « temps investi » / « gain de temps grâce à l'automatisation » arrêter le vol de mon imagination. =)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top