2009-10-21 11 views
7

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.

Respuesta

4

Esto hizo TFS/mstest/msbuild feliz.

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

no obtener ningún resultado de la prueba fue un problema diferente con la configuración de implementación y prueba de la caja.

Cuestiones relacionadas