2009-10-21 11 views
7

Quando si utilizza CustomizableOutDir, si verificano problemi con TFS Team Build che spegne correttamente MSTest.exe.CustomizableOutDir = true breaks MSTest.exe durante la compilazione della squadra

TFSBuild.rsp

/verbosity:diagnostic 
/p:CustomizableOutDir=true 

TFSBuild.proj (soluzioni per costruire frammento)

<!-- code --> 
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../foo.csproj"> 
     <Properties>OutputPath=$(BinariesRoot)\WindowsServices\foo\</Properties> 
    </SolutionToBuild> 
    <!-- tests --> 
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../test/test.sln"> 
     <Targets>t1;t2</Targets> 
     <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties> 
    </SolutionToBuild> 

Con entrambi <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties> e <Properties></Properties>, ho il seguente errore al termine della compilazione:

"C: \ build \ BuildType \ TFSBuild.proj" (destinazione TestConfiguration) (1:12) -> (obiettivo CoreTestConfiguration) ->
MSBUILD: avviso MSB6003: Impossibile eseguire il file eseguibile "MSTest.exe" specificato "MSTest.exe" . Il nome della directory è valido

Dopo aver trovato this article, I e poi aggiunto il seguente:

<Target Name="AfterCompile"> 
    <ItemGroup> 
     <SolutionOutputs Condition="'%(CompilationOutputs.Solution)' == '$(Solution)'" Include="%(RootDir)%(Directory)**\*.*" /> 
     <ServiceOutputs Include="$(BinariesRoot)\WindowsServices\**\*.*" /> 
     <TestHarnessOutputs Include="$(BinariesRoot)\TestHarness\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(SolutionOutputs)" DestinationFolder="$(TeamBuildOutDir)" /> 
    <Copy SourceFiles="@(ServiceOutputs)" DestinationFolder="$(TeamBuildOutDir)" /> 
    <Copy SourceFiles="@(TestHarnessOutputs)" DestinationFolder="$(TeamBuildOutDir)" /> 
    </Target> 

che ha dato questo:

(bersaglio AfterCompile) ->
C: \ build \ BuildType \ TFSBuild.proj (289,5): errore MSB3023: Nessuna destinazione specificata per Copia. Si prega di fornire "DestinationFiles" o "DestinationDirectory".

DestinationDirectory non fa parte dello schema http://schemas.microsoft.com/developer/msbuild/2003, ma ho pensato di provarlo lo stesso. Così ho cambiato tutte le DestinationFolder sulle attività di copia per DestinationDirectory e come previsto ho ottenuto questo:

(bersaglio AfterCompile) ->
C: \ costruire \ buildtype \ TFSBuild.proj (288,44): errore MSB4064: il parametro "DestinationDirectory" è non supportato dall'attività "Copia". Verificare che il parametro esista nell'attività ed è una proprietà di istanza pubblica impostabile .
C: \ build \ BuildType \ TFSBuild.proj (288,5): errore MSB4063: L'attività "Copia" potrebbe non essere inizializzata con i suoi parametri di input .

Chiunque là fuori ha CustomizableOutDir e MSTest che lavorano insieme in armonia con il loro Team Build TFS?

EDIT:

ho trovato this discussion e applicato questo cambiamento:

<Target Name="BeforeTest"> 
    <!-- The tests won't run if the binaries directory does not exist --> 
    <MakeDir 
    Directories="$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)" 
    Condition="!Exists('$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)')" /> 
</Target> 

che ha portato in questo:

"C: \ costruire \ buildtype \ TFSBuild.proj" (Obiettivo RunTest) (1:11) -> "C: \ build \ BuildType \ TFSBuild.proj" (destinazione TestConfiguration) (1:12) -> (CoreTest bersaglio Configurazione) ->
MSBUILD: avviso MSB6006: "MSTest.exe" terminato con il codice 1.

risposta

4

Ciò ha reso TFS/mstest/MSBuild felice.

<Target Name="BeforeTest"> 
    <!-- The tests won't run if the binaries directory does not exist --> 
    <MakeDir 
    Directories="$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)" 
    Condition="!Exists('$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)')" /> 
</Target> 

Non ottenere risultati di test è stato un problema diverso con la configurazione di distribuzione e test box.

Problemi correlati