2009-04-20 6 views
1

Ich versuche, eine BuildStep auf das Afterbuild Ziel in MSBuild hinzuzufügen und ich bin mit den folgendenMSBuild und BuildUri

<Target Name="AfterCompile">  
    <ItemGroup>  
     <TestAssemblies Include="$(OutDir)\DataStoreUnitTests.dll" /> 
    </ItemGroup>  

    <BuildStep  
     Name="Run unit Tests" 
     TeamFoundationServerUrl="$(TeamFoundationServerUrl)"  
     BuildUri="$(BuildUri)"  
     Message="Running unit tests">  
     <Output TaskParameter="Id" PropertyName="StepId" />  
    </BuildStep>  

    <Gallio  
     Assemblies="@(TestAssemblies)"  
     ReportTypes="html"  
     ReportFileNameFormat="buildreport{0}{1}"  
     ReportOutputDirectory="." />  

    <BuildStep  
     TeamFoundationServerUrl="$(TeamFoundationServerUrl)"  
     BuildUri="$(BuildUri)"  
     Id="$(StepId)"  
     Message="Yay! All tests succeded!"  
     Status="Succeeded" />  
     <OnError ExecuteTargets="MarkBuildStepAsFailed" /> 
    </Target> 

    <Target Name="MarkBuildStepAsFailed">  
     <BuildStep  
      TeamFoundationServerUrl="$(TeamFoundationServerUrl)"  
      BuildUri="$(BuildUri)"  
      Id="$(StepId)"  
      Message="Tests have failed. See test report in drop folder for details." 
      Status="Failed" /> 
</Target> 

Und wenn ich es in MSBuild laufen bekomme ich folgende Fehlermeldung:

error MSB4044: The "BuildStep" task was not given a value for the required parameter "BuildUri".

Und ich kann nicht sehen warum, weiß jemand?

Antwort

4

Führen Sie dieses Ziel als Teil eines Team Build (auf dem Build Server) oder als Desktop Build (d. H. örtlich)?

Die BuildUri-Eigenschaft wird normalerweise vom Build-Agent an den Build übergeben, wenn sie einen neuen Teambuild auslöst. In Ihrem Skript wird Uri verwendet, um TFS mitzuteilen, an welches Build-Detail der Build-Schritt angehängt werden soll. Wenn Sie einen Desktop-Build ausführen, ist dieser leer, es sei denn, Sie übergeben die Eigenschaft in der Befehlszeile.

4

Meine Gedanken sind, dass $(BuildUri) zu nichts auswertet. Versuchen Sie eine print-Anweisung auszuführen, um die von VS/MSBuild ausgegebene Zeilennummer als Fehler zu debuggen und auszurichten.

<Message Text="$(BuildUri)" /> 

MSBuild kann von der Kommandozeile ausgeführt werden (ich finde MSBuild einfacher zu sein, mit dem Weg zur Arbeit) mit dem folgenden Befehl:

C:\WINDOWS\Microsoft.NET\Framework\%FrameWork_Version%\MSBuild /verbosity:n 
%Solution or Project file% 

einzustellen $(BuildUri):

<Target Name="AfterCompile">  
    <PropertyGroup> 
     <BuildUri>Build_Uri_Value</BuildUri > 
    </PropertyGroup> 

    <ItemGroup> 
     ... 

Informationen zu BuildUri finden Sie hier:

What is the BuildUri and where do i get it from when i'm just trying to get some source?