2009-10-21 10 views
7

Wenn ich CustomizableOutDir benutze, habe ich Probleme mit TFS Team Build feuern off MSTest.exe richtig.CustomizableOutDir = true bricht MSTest.exe während Team Build

TFSBuild.rsp

/verbosity:diagnostic 
/p:CustomizableOutDir=true 

TFSBuild.proj (Lösungen Schnipsel zu bauen) sowohl

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

Mit <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties> und <Properties></Properties>, erhalte ich die folgende Fehlermeldung am Ende des Builds:

"C: \ Build \ BuildType \ TFSBuild.proj" (TestKonfigurationsziel) (1:12) -> (CoreTestConfiguration target) ->
MSBUILD: Warnung MSB6003: Die angegebene Task "MSTest.exe" konnte nicht ausgeführt werden. konnte nicht ausgeführt werden. Der Verzeichnisname ungültig ist

Nach this article zu finden, ich und fügte dann hinzu folgende:

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

Welche dies gab:

(AfterCompile Ziel) ->
C: \ Build \ BuildType \ TFSBuild.proj (289,5): Fehler MSB3023: Kein Ziel für Kopie angegeben. Bitte geben Sie entweder "DestinationFiles" oder "DestinationDirectory" an.

DestinationDirectory ist nicht Teil des Schemas http://schemas.microsoft.com/developer/msbuild/2003, aber ich dachte, ich würde es trotzdem versuchen. Also änderte ich die ganze DestinationFolder auf die Kopieraufgaben DestinationDirectory und wie erwartet Ich habe dies:

(AfterCompile Ziel) ->
C: \ \ BuildType \ TFSBuild.proj (288,44) bauen: Fehler MSB4064: Der "DestinationDirectory" -Parameter ist nicht von der Task "Kopieren" unterstützt. Überprüfen Sie, ob der Parameter in der Task vorhanden ist, und es ist eine einstellbare öffentliche Instanzeigenschaft.
C: \ Build \ BuildType \ TFSBuild.proj (288,5): Fehler MSB4063: Die Aufgabe "Kopieren" konnte nicht initialisiert werden mit seinen Eingang Parameter.

Jeder da draußen hat CustomizableOutDir und MSTest, die in Harmonie mit ihrer TFS Team Build zusammenarbeiten?

EDIT:

Ich fand this discussion und wandte diese Änderung:

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

, die in dieser Folge:

"C: \ bauen \ BuildType \ TFSBuild.proj" (RunTest - Ziel) (1:11) -> "C: \ Build \ BuildType \ TFSBuild.proj" (Testkonfigurationsziel) (1:12) -> (CoreTest Konfiguration Ziel) ->
MSBUILD: Warnung MSB6006: "MSTest.exe" verlassen mit Code 1.

Antwort

4

Das machte tfs/mstest/msbuild glücklich.

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

Keine Testergebnisse zu erhalten, war ein anderes Problem bei der Bereitstellung und Testboxkonfiguration.