Al utilizar CustomizableOutDir, tengo problemas con TFS Team Build disparando MSTest.exe correctamente.CustomizableOutDir = true rompe MSTest.exe durante Team Build
TFSBuild.rsp
/verbosity:diagnostic
/p:CustomizableOutDir=true
TFSBuild.proj (soluciones para construir fragmento)
<!-- 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 tanto <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties>
y <Properties></Properties>
, me sale el siguiente error al final de la construcción:
"C: \ build \ BuildType \ TFSBuild.proj" (TestConfiguration target) (1:12) -> (destino de CoreTestConfiguration) ->
MSBUILD: advertencia MSB6003: El ejecutable de tarea especificada "MSTest.exe" no se pudo ejecutar. El nombre del directorio no es válido
Después de encontrar this article, I y luego agregó lo siguiente:
<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>
Que dio esto:
(objetivo AfterCompile) ->
C: \ build \ BuildType \ TFSBuild.proj (289,5): error MSB3023: No se especificó el destino para Copiar. Proporcione ya sea "DestinationFiles" o "DestinationDirectory".
DestinationDirectory no es parte del esquema http://schemas.microsoft.com/developer/msbuild/2003
, pero pensé que lo intentaría de todos modos. Así que cambió todo el DestinationFolder
en las tareas de copia de DestinationDirectory
y como se esperaba Tengo esto:
(objetivo AfterCompile) ->
C: \ build \ buildtype \ TFSBuild.proj (288,44): error MSB4064: el parámetro "DestinationDirectory" es no compatible con la tarea "Copiar". Verifique que el parámetro exista en la tarea y que sea una propiedad de instancia pública configurable de .
C: \ build \ BuildType \ TFSBuild.proj (288,5): error MSB4063: La tarea "Copiar" podría no inicializarse con sus parámetros de entrada .
¿Alguien por ahí tiene CustomizableOutDir y MSTest trabajando juntos en armonía con su TFS Team Build?
EDIT:
He encontrado this discussion y se aplicó este cambio:
<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>
cuyo resultado fue esta:
"C: \ build \ buildtype \ TFSBuild.proj" (Objetivo RunTest) (1:11) -> "C: \ build \ BuildType \ TFSBuild.proj" (Destino TestConfiguration) (1:12) -> (CoreTest objetivo de configuración) ->
MSBUILD: advertencia MSB6006: "MSTest.exe" salió con el código 1.