2009-09-03 12 views
0

J'ai fait une tâche personnalisée dans mon build TFS pour examiner le fichier GlobalAssemblyInfo.cs de mon projet afin d'extraire un attribut (AssemblyInformationalVersion pour être exact) afin d'utiliser sa valeur dans le nommage d'un fichier zip que je crée avec la construction.Comment obtenir une propriété d'une tâche dans une construction TFS?

<UsingTask TaskName="GetAssemblyInformationalVersion.GetAssemblyInformationalVersionTask" 
     AssemblyFile="$(MSBuildExtensionsPath)\GetAssemblyInformationalVersion.dll" /> 

Le fichier .cs pour ma DLL a ces deux propriétés:

[Required] 
public String InfoFile { get; set; } 
public String InfoVersion { get; set; } 

Voici mon appel à ma tâche:

<GetAssemblyInformationalVersionTask InfoFile="$(Path to file)\GlobalAssemblyInfo.cs" /> 

Mon intention est de passer dans les informations de montage fichier à travers la propriété InfoFile afin que je puisse trouver ce que je veux (que fait mon code C#) et le définir à la propriété InfoVersion pour que je puisse référencer dans TFS en l'exécutant comme une tâche. En principe, j'utiliserais la propriété InfoVersion pour nommer mon fichier zip. Par exemple,

"Package.$(some form of reference to InfoVersion).zip" 

Cependant, je n'ai pas été en mesure de trouver un moyen d'accomplir cela.

Ma question est: Comment puis-je invoquer la partie get de ma propriété dans ma tâche? Il semble que cela devrait être facile, car je n'ai rien trouvé d'écrit sur ce genre de chose en ligne, mais toute aide sera très appréciée.

Répondre

3

Votre tâche personnalisée, GetAssemblyInformationVersionTask, doit posséder une propriété de type ITaskItem décorée avec l'attribut [Output].

public class GetAssemblyInformationVersionTask 
{ 
    [Output] 
    public ITaskItem Version { get; set; } 

    public override bool Execute() 
    { 
     // code to set Version 
     return true; 
    } 
} 

Ensuite, vous pourrez l'utiliser comme ceci:

<GetAssemblyInformationVersionTask InfoFile="$(Path to file)\GlobalAssemblyInfo.cs"> 
     <Output TaskParameter="Version" ItemName="AssemblyVersion" /> 
</GetAssemblyInformationVersionTask> 

AssemblyVersion sera la variable d'élément qui contiendra la valeur de la propriété version de votre tâche.

Si vous ne l'avez pas vu, MSDN Best Practices for Reliable Builds, Part 2 aborde le sujet des paramètres de sortie. Je vais voir si je ne peux pas trouver de meilleurs exemples en ligne. Thomas Ardal a un autre bon exemple de [Sortie] dans une tâche personnalisée here.

HTH,

Z

+0

Mon problème est maintenant résolu parfaitement :) Merci pour la réponse et les pointeurs !! (va montrer combien je suce à googler des choses, bien que ...) –