2009-04-20 18 views
1

私はMSBuildのでAfterBuildターゲットにBuildStepを追加しようとしていると私は、次ののMSBuildと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> 

を使用していますが、私はMSBuildの中でそれを実行したときに、私は次のエラーを取得する:

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

私はなぜ、誰にも分かりません。

答えて

4

このターゲットはチームビルドの一部として(ビルドサーバー上で)、またはデスクトップビルドとして(つまり、ローカル)?

BuildUriプロパティは、通常、新しいチームビルドをトリガするときにビルドエージェントによってビルドに渡されます。あなたのスクリプトでは、Uriを使ってビルドステップをアタッチするビルドの詳細をTFSに伝えます。デスクトップビルドを実行している場合、コマンドラインでプロパティを渡さない限り、これは空になります。

4

私の考えは、$(BuildUri)は何も評価されていないということです。 VS/MSBuildがエラーとして指定している行番号をデバッグしてターゲットにするには、printステートメントを実行してください。

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

MSBuildのは、次のコマンドを使用して、コマンドライン(私はMSBuildのがそのように動作するように簡単であることを見つける。)から実行することができます。$(BuildUri)を設定するには

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

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

    <ItemGroup> 
     ... 

BuildUriに関する情報は、ここにあります:

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