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.