CustomizableOutDir = true rompt MSTest.exe pendant la génération en équipe
-
05-07-2019 - |
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.
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.