2009-03-03 9 views
0

J'ai 3 scripts de construction qui créent des composants séparés d'une suite distribuée d'applications. Ils sont stockés dans une structure de dossiers comme ce qui suit:Comment partager une propriété entre plusieurs scripts de construction TFS?

LegacyComponents - code VB6 qui est "en direct", mais dans le processus d'être remplacé
NewComponents - composants réécrite C#
Base de données
TeamBuildTypes
└ LegacyBuild
└ newbuild
└ DatabaseBuild

Dans chaque dossier de construction J'ai un scri pt nommé TFSBuild.proj. Étant donné que les générations sont séparées, elles reçoivent chacune un numéro de build distinct. J'ai besoin d'étiqueter chacun d'eux avec une chaîne qui les lie tous ensemble afin que je puisse "obtenir" une étiquette et avoir l'ensemble cohérent du code.

J'ai créé un fichier appelé KitNumber.targets avec une propriété KitNumber et l'ai placé dans le dossier TeamBuildTypes. Je mets alors la ligne suivante dans chaque script de construction:

<Import Project=".\..\KitNumber.targets"/>

Je voudrais maintenant être en mesure de changer le numéro de kit en un seul endroit et l'ont appliqué dans chaque construction.

Cela fonctionne sur ma boîte de dev car la source a déjà été supprimée de TFS mais échoue sur la machine de construction car seul le contenu du répertoire contenant le script de construction est descendu.

Où puis-je stocker la propriété partagée afin que je puisse l'utiliser dans chaque script?

Répondre

0

l'aide d'un fichier texte avec une seule ligne contenant l'étiquette que je veux appliquer:

<Target Name="ApplyKitNumberLabel" Condition="$(KitNumber) != ''"> 

    <ReadLinesFromFile File="$(WorkspaceRoot)\TeamBuildTypes\KitNumber.txt"> 
    <Output TaskParameter="Lines" 
     PropertyName="KitNumber" /> 
    </ReadLinesFromFile> 

    <Label TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
     Files="$(WorkspaceRoot)\$(BranchName)\LegacyComponents" 
     Name="$(KitNumber)" 
     Recursive="True" /> 

</Target> 
Questions connexes