0

L'activité de construction personnalisée dépend des ensembles TFS suivants:Comment compiler une activité de construction de manière à ce qu'elle fonctionne avec TFS 2010, TFS 2012 et TFS 2013?

Microsoft.TeamFoundation.Build.Client.dll 
Microsoft.TeamFoundation.Build.Workflow.dll 
Microsoft.TeamFoundation.VersionControl.Client.dll 

L'objectif est de le compiler de telle manière que cela fonctionnera sur TFS 2010, TFS 2012 et TFS 2013 sans avoir à spécifier manuellement les redirections de liaison pour toutes les machines Build Agent possibles où l'activité peut être appelée. Fournir un fichier de configuration avec l'activité et créer un domaine d'application qui utilise les redirections de liaison spécifiées dans ce fichier de configuration semble être une option, mais cela ne fonctionnerait pas, puisque le "Microsoft.TeamFoundation.Build.Client. L'attribut BuildActivity "dont l'activité doit être décorée avec * sera lu par le code appelant avant que le code de l'assembly de l'activité personnalisée ne soit exécuté - et si la version de l'assembly TFS dont provient cet attribut ne correspond pas à la version du TFS assembly chargé en mémoire, l'activité est aussi bonne que si elle n'était pas décorée avec cet attribut.

(* Je confirme que si une activité personnalisée n'est pas décorée avec l'attribut BuildActivity, le type d'activité personnalisée ne peut pas être créé et la génération échoue.)

Suppression de toutes les références à des activités de TFS et chargement TFS liés les types utilisant la réflexion semblent également être une autre option, mais échoueraient pour la même raison, puisque l'attribut BuildActivity ne peut évidemment pas être appliqué de manière réfléchie à la classe avant que le code de la classe ne soit appelé par du code externe. Comme les quelques types et méthodes TFS dont l'activité dépend existent dans les assemblys TFS 2010, TFS 2012 et TFS 2013 et que l'activité est compilée avec .NET 4.0, la seule solution raisonnable que je puisse envisager est de créer 3 builds séparés: compilé avec les assemblys TFS/VS 2010 (10.0.0.0), compilé avec les assemblys TFS/VS 2012 (11.0.0.0) et compilé avec les assemblys TFS/VS 2013 (12.0.0.0). Bien sûr, alors que j'ai les versions TFS2010/TFS2012/TFS2013 des assemblages ci-dessus sur ma machine de développement, l'hypothèse est que les Build Agents n'auront que la version de ces assemblys fournie avec sa version de TFS.

L'autre solution semble être de spécifier des redirections de liaison pour toutes les machines Build Agent, mais avec un nombre assez important de machines Build Agent, cela n'est pas possible.

Y at-il une solution réelle à ce problème ou suis-je obligé de créer 3 builds?

Répondre

0

si vous descendez la route d'avoir 3 ensembles, vous pouvez techniquement créer 3 dossiers BuildProcessAssemblies et ajoutez le

Microsoft.TeamFoundation.Build.Client.dll

Microsoft.TeamFoundation.Build. Workflow.dll

Microsoft.TeamFoundation.VersionControl.Client.dll

bibliothèques à ea ch, puis pointez chaque contrôleur sur le dossier correspondant.

Questions connexes