2008-10-22 11 views
7

Monitorując kompilację TFS z Visual Studio (2008 lub 2005), można zobaczyć, gdzie to jest.Jak wyświetlić "krok" w procesie tworzenia programu Visual Studio?

Problem polega na tym, że mam kilka niestandardowych kroków po kompilacji, które chciałbym, aby programista mógł zobaczyć bezpośrednio przez interfejs użytkownika. Te kroki trwają kilka razy i możemy również uzyskać "czas" etapu kompilacji.

Masz pomysł, jak to wyświetlić?

Odpowiedz

9

Jest to wzór, który normalnie używać do dodawania kroki do raportu kompilacji w TFS 2008. (Patrz http://code.msdn.microsoft.com/buildwallboard/ pełny przykład, że ja zwykle korzystam w moim zespole Budowanie rozmowy)

Zasadniczo, jest to, że magia istnieje niestandardowe zadanie dla ciebie w TFS2008 o nazwie "BuildStep". Oto odcinek gdzie generowanie i instalator MSI i zbudować odpowiednie kroki budować w raporcie:

<Target Name="PackageBinaries"> 

    <!-- create the build step --> 
    <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
       BuildUri="$(BuildUri)" 
       Message="Creating Installer" 
       Condition=" '$(IsDesktopBuild)' != 'true' " > 
     <Output TaskParameter="Id" 
       PropertyName="InstallerStepId" /> 
    </BuildStep> 

    <!-- Create the MSI file using WiX --> 
    <MSBuild Projects="$(SolutionRoot)\SetupProject\wallboard.wixproj" 
    Properties="BinariesSource=$(OutDir);PublishDir=$(BinariesRoot);Configuration=%(ConfigurationToBuild.FlavourToBuild)" > 
    </MSBuild> 

    <!-- If we sucessfully built the installer, tell TFS --> 
    <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
       BuildUri="$(BuildUri)" 
       Id="$(InstallerStepId)" 
       Status="Succeeded" 
       Condition=" '$(IsDesktopBuild)' != 'true' " /> 

    <!-- Note that the condition above means that we do not talk to TFS when doing a Desktop Build --> 

    <!-- If we error during this step, then tell TFS we failed--> 
    <OnError ExecuteTargets="MarkInstallerFailed" /> 
    </Target> 

    <Target Name="MarkInstallerFailed"> 
    <!-- Called by the PackageBinaries method if creating the installer fails --> 
    <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
       BuildUri="$(BuildUri)" 
       Id="$(InstallerStepId)" 
       Status="Failed" 
       Condition=" '$(IsDesktopBuild)' != 'true' " /> 
    </Target> 

więc początkowo, tworzę krok gromadzeniu i zapisać identyfikator krok w propery zwanego InstallerStepId. Po wykonaniu zadania ustawiam status tego kroku na Sukces. Jeśli wystąpią jakiekolwiek błędy podczas kroku, ustawiam status tego kroku na Failed.

Powodzenia,

Martin.

+0

To jest WYŁĄCZNIE to! Dzięki!!!! –

+0

Właśnie to przetestowałem. Działa świetnie. Dzięki! –

0

Zauważ, że w doskonałym przykładzie @Martin Woodward, PackageBinaries jest jednym z istniejących TFS build targets. Jeśli chcesz użyć własnych celów, można użyć zadania CallTarget aby połączyć je z jednym ze znanych celów, np

<Target Name="AfterDropBuild"> 
    <CallTarget Targets="CreateDelivery"/> 
    <CallTarget Targets="CreateInventory"/> 
</Target> 

Następnie w swoich celów (np CreateDelivery) użyć zadania BuildStep według Martina przykład.

Powiązane problemy