2009-10-21 17 views
7

Podczas używania CustomizableOutDir, mam problemy z działem TFS Team Build, uruchamiając poprawnie MSTest.exe.CustomizableOutDir = true zrywa MSTest.exe podczas budowania zespołu

TFSBuild.rsp

/verbosity:diagnostic 
/p:CustomizableOutDir=true 

TFSBuild.proj (rozwiązania do budowy fragment)

<!-- 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> 

Zarówno <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties> i <Properties></Properties>, otrzymuję następujący błąd na końcu kompilacji:

"C: \ build \ BuildType \ TFSBuild.proj" (Cel TestConfiguration) (1:12) -> (Cel CoreTestConfiguration) ->
MSBUILD: ostrzeżenie MSB6003: Nie można uruchomić określonego pliku wykonywalnego "MSTest.exe" o numerze . Nazwa katalogu jest nieprawidłowy

Po znalezieniu this article, ja i następnie dodaje się co następuje:

<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> 

który dał tak:

(target AfterCompile) ->
C: \ build \ BuildType \ TFSBuild.proj (289,5): Błąd MSB3023: Brak miejsca docelowego określonego dla opcji Kopiuj. Podaj "DestinationFiles" lub "DestinationDirectory".

DestinationDirectory nie jest częścią schematu http://schemas.microsoft.com/developer/msbuild/2003, ale pomyślałem, że i tak spróbuję. Więc zmieniłem cały DestinationFolder sprawie zadań kopiowania do DestinationDirectory i zgodnie z oczekiwaniami, mam to:

(target AfterCompile) ->
C: \ budować \ BuildType \ TFSBuild.proj (288,44): błąd MSB4064: Parametr "DestinationDirectory" o numerze to nieobsługiwany przez zadanie "Kopiuj" . Sprawdź, czy parametr istnieje w zadaniu i jest ustawialną publiczną właściwością instancji .
C: \ build \ BuildType \ TFSBuild.proj (288,5): błąd MSB4063: Zadanie "Kopiuj" nie może być zainicjowane parametrami wejściowymi .

Ktoś tam ma CustomizableOutDir i MSTest współpracujące w harmonii ze swoim zespołem TFS Team?

EDIT:

znalazłem this discussion i stosować tę zmianę:

<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> 

co skutkowało tym:

"C: \ budować \ BuildType \ TFSBuild.proj" (Cel RunTest) (1:11) -> "C: \ build \ BuildType \ TFSBuild.proj" (Cel TestConfiguration) (1:12) -> (CoreTest docelowa konfiguracja) ->
MSBuild: Ostrzeżenie MSB6006: "MSTest.exe" wyszedł z kodem 1.

Odpowiedz

4

To sprawiło TFS/MSTest/msbuild zadowolony.

<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> 

Brak wyników testów był innym problemem z konfiguracją wdrożenia i konfiguracji.