2009-11-20 3 views
2

Je cherche à étendre certaines tâches de post-construction pour inclure l'extraction puis l'archivage d'une DLL. Nous utilisons TFS et je sais qu'il existe des outils de ligne de commande pour cela. Ce que je ne sais pas comment faire est de les intégrer dans mes tâches de post-construction existantes. À l'heure actuelle, mes tâches de création de post sont simples et sont gérées dans Visual Studio via les propriétés du projet. Finalement, je veux répartir mes tâches de construction personnalisées dans des fichiers externes et les appeler, mais cela fait l'objet d'une autre question;)Tâches de Visual Studio Build - Opérations TFS

Répondre

0

Vous pouvez utiliser Team Foundation Server client API. TeamFoundationServer est la classe de base qui devrait vous permettre de vous connecter à un serveur, de lister et de manipuler des projets TFS.

0

msbuildtasks a des extensions pour msbuild avec code source (son opensource). Vous pouvez l'utiliser pour créer votre propre fonctionnalité d'archivage/extraction. (En combinaison avec ce que suggère Darin)

http://msbuildtasks.tigris.org/

4

Sans recourir à vous pouvez essayer personnalisé construire des tâches à utiliser le Team Foundation Source Control Command-Line tool (tf.exe).

L'exemple ci-dessous montre comment utiliser tf.exe pour extraire un fichier de TFS.

<PropertyGroup> 
    <TfCommand> 
     &quot;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\tf.exe&quot; 
    </TfCommand> 
</PropertyGroup> 

<Target Name="AfterCompile"> 
    <Exec Command="$(TfCommand) get /force /noprompt &quot;$(SolutionRoot)\sources\example.cs&quot;" 
     ContinueOnError="true" /> 
    <Exec Command="$(TfCommand) checkout &quot;$(SolutionRoot)\sources\example.cs&quot;" 
     ContinueOnError="true"/> 
</Target> 

Inclure dans votre propre fichier de projet MSBuild.

Cet exemple ne fait rien d'utile et vous devez le modifier pour qu'il corresponde à votre environnement, mais peut-être que cela vous permet de commencer. J'ai reçu cet exemple de tfsbuild.com.

+0

de Nice ... vous pouvez ajouter les outils de ligne de commande vous PATH donc si vous passez à une boîte de construction x64 vous ne devez pas mettre à jour le fichier de construction. –

0

Jetez un oeil à la SDC Tasks Library sur CodePlex. C'est un ensemble de tâches MSBuild personnalisées qui inclut les tâches Checkin et Checkout (voir l'espace de noms Microsoft.Sdc.Tasks.SourceTfs dans la documentation d'accompagnement). Vous pouvez incorporer ces tâches dans la cible "AfterBuild" dans votre fichier de projet.

<SourceTfs.Checkout Path="Path" TfsVersion="tfsVersion" 
WorkingDirectory="workingDirectory"/> 

<SourceTfs.Checkin Path="Path" Comments="Comments" TfsVersion="tfsVersion" 
WorkingDirectory="workingDirectory" Override="overrideText"/> 

Vous devez définir TfsVersion sur "2005" ou "2008" selon le cas.

0

Notre équipe a plusieurs petits projets qui produisent des DLL utilisées par plusieurs autres projets. Une partie de notre publication est de publier ces DLL. J'utilise la cible AfterDropBuild pour cela. J'espère que les commentaires dans mon extrait de script de construction sont assez clairs pour montrer ce que je fais.

<!-- Get a reference to the new release address finalizer DLL and the existing published address finalizer DLL --> 
<PropertyGroup> 
    <ReleaseDLL>$(DropLocation)\$(BuildNumber)\Release\Address_Finalizer.dll</ReleaseDLL> 
    <PublishedFolder>$(SolutionRoot)\3rd Party\bin\PG File Import</PublishedFolder> 
    <PublishedDLL>$(PublishedFolder)\Address_Finalizer.dll</PublishedDLL> 
</PropertyGroup> 

<!-- Check out the published DLL --> 
<Exec WorkingDirectory="$(SolutionRoot)" Command='$(TfCommand) checkout /lock:checkout "$(PublishedDLL)"'/> 

<!-- Copy release to published --> 
<Copy SourceFiles="$(ReleaseDLL)" DestinationFolder="$(PublishedFolder)"/> 

<!-- Check in the published DLL --> 
<Exec WorkingDirectory="$(SolutionRoot)" Command='$(TfCommand) checkin /override:Automated /noprompt /comment:"$(VersionComment)" "$(PublishedDLL)"'/> 

Questions connexes