2012-11-17 1 views
0

J'aime comment BuildProcessTemplates et le dossier Assemblages personnalisés synchronisent automatiquement les scripts de construction sur le contrôleur/agent de construction. J'ai écrit des activités personnalisées en C# et je comprends comment ajouter une importation pour pouvoir utiliser les types dans ces assemblages.TFS Workflow MSBuild Activité Emplacement du projet

Je vois aussi comment il est possible d'utiliser un fichier MSBuild via l'activité MSBuild. Je note également que si je vérifie un fichier de msbuild (disons foo.proj) dans le dossier CustomAssemblies dans le contrôle de source que le msbuild apparaît dans la structure de répertoire temporaire sur le serveur à côté de mes assemblys personnalisés.

Alors, voici ma question? Comment puis-je référencer l'emplacement de foo.proj dans la propriété Project de l'activité MSBuild? J'ai cherché des variables et autres, mais je n'arrive pas à le mettre ensemble.

Répondre

0

J'ai trouvé un moyen de le faire en utilisant une activité de code personnalisée. Fondamentalement, je fil dans le flux de travail comme un modèle d'initialisation variable, puis plus tard l'utiliser dans mes autres activités. Mais je préfère le faire sans avoir besoin d'un assemblage personnalisé si possible.

using System.IO; 
using System.Activities; 
using System.Reflection; 
using Microsoft.TeamFoundation.Build.Client; 

namespace BuildTasks.Activities 
{ 

    [BuildActivity(HostEnvironmentOption.All)] 
    public sealed class FindCustomAssembliesDirectory : CodeActivity 
    { 
     public OutArgument<string> CustomAssembliesDirectory { get; set; } 

     protected override void Execute(CodeActivityContext context) 
     { 
      context.SetValue(CustomAssembliesDirectory, new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName); 
     } 
    } 
} 
Questions connexes