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.