Question

Lors de l'utilisation de CustomizableOutDir, des problèmes se produisent lorsque TFS Team Build déclenche correctement MSTest.exe.

TFSBuild.rsp

/verbosity:diagnostic
/p:CustomizableOutDir=true

TFSBuild.proj (solutions pour générer un extrait de code)

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

Avec <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties> et <Properties></Properties>, l'erreur suivante apparaît à la fin de la construction:

  

" C: \ build \ BuildType \ TFSBuild.proj "   (Cible TestConfiguration) (1:12) - & Gt;   (Cible CoreTestConfiguration) - & Gt;
  MSBUILD: avertissement MSB6003: le   tâche spécifiée exécutable " MSTest.exe "   ne pouvait pas être exécuté. Le nom du répertoire   est invalide

Après avoir trouvé cet article , j'ai ensuite ajouté les éléments suivants:

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

Ce qui a donné ceci:

  

(cible AfterCompile) - >
  C: \ build \ BuildType \ TFSBuild.proj (289,5):   erreur MSB3023: pas de destination   spécifié pour Copier. S'il vous plaît fournir   soit " DestinationFiles " ou   " DestinationDirectory ".

DestinationDirectory ne fait pas partie du schéma http://schemas.microsoft.com/developer/msbuild/2003, mais je me suis dit que j'essaierais quand même. J'ai donc changé toutes les DestinationFolder tâches de copie en DestinationDirectory et, comme prévu, j'ai obtenu ceci:

  

(cible AfterCompile) - >
  C: \ build \ BuildType \ TFSBuild.proj (288,44):   erreur MSB4064: le   " DestinationDirectory " paramètre est   non pris en charge par le " Copier " tâche.   Vérifiez que le paramètre existe sur le   tâche, et il est un public réglable   propriété d'instance.
  C: \ build \ BuildType \ TFSBuild.proj (288,5):   erreur MSB4063: le " Copier " tâche pourrait   ne pas être initialisé avec son entrée   paramètres.

Quelqu'un a-t-il CustomizableOutDir et MSTest qui travaillent ensemble en harmonie avec leur TFS Team Build?

EDIT:

J'ai trouvé cette discussion et appliqué cette modification:

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

Ce qui a abouti à ceci:

  

" C: \ build \ BuildType \ TFSBuild.proj "   (Cible RunTest) (1:11) - & Gt;   " C: \ build \ BuildType \ TFSBuild.proj "   (Cible TestConfiguration) (1:12) - & Gt;   (Cible CoreTestConfiguration) - & Gt;
  MSBUILD: avertissement MSB6006:   " MSTest.exe " quitté avec le code 1.

Était-ce utile?

La solution

Cela a rendu tfs / mstest / msbuild heureux.

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

L'absence de résultats de test était un problème différent du déploiement et de la configuration de la boîte de test.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top