2008-11-22 14 views
2

Je crée un ITask personnalisé pour MSBuild qui télécharge les fichiers de sortie de ma construction. J'utilise un projet de déploiement Web pour publier mon application et me connecter à la cible AfterBuild pour effectuer mon travail personnalisé.MSBuild ITaskItem tableau est obsolète

Si j'ajoute un fichier à mon application Web, la première fois que j'en fais une, ma tâche personnalisée ne reconnaît pas le fichier ajouté récemment. Pour que ce fichier apparaisse dans mon tableau d'ITaskItems, je dois d'abord faire une construction avec ma cible 'AfterBuild' retirée, puis recommencer la construction avec ma cible 'AfterBuild' en place.

Voici ce que mon fichier de construction ressemble:

<ItemGroup> 
    <PublishContent Include="$(OutputPath)\**" /> 
</ItemGroup> 

<Target Name="AfterBuild"> 
    <UploadTask FilesToPublish="@(PublishContent)" /> 
</Target> 

La liste @ (PublishContent) semble être initialisé au début de la construction au lieu de refléter les changements qui auraient eu lieu par la construction processus lui-même.

Des idées?

Merci

Répondre

1

Votre ItemGroup va s'évalué lorsque le fichier de projet (premier chargement lorsque vous vous ouvrez ou Visual Studio « déchargent » et 'reload le projet dans l'Explorateur de solutions).

Ce dont vous avez probablement besoin est de créer un ItemGroup en tant que tâche dans votre cible 'AfterBuild'. Exemple:

<CreateItem Include="$(OutputPath)\**"> 
     <Output TaskParameter="Include" ItemName="OutputFiles"/> 
</CreateItem> 

suivi par:

<Target Name="AfterBuild"> 
    <UploadTask FilesToPublish="@(OutputFiles)" /> 
</Target>