J'essaie de "réparer" une construction sur notre serveur TF qui dépose tout dans le dossier Drop en une seule fois (plutôt que dans des dumps de projets séparés comme le ferait une construction locale), et je suis un peu frustré - je vais être honnête et dire que c'est la première fois que je travaille avec MSBuild et que cela m'a été imposé - ce n'est pas un fichier de construction que j'ai configuré à partir de zéro.
J'ai trouvé un certain nombre de solutions en ligne, et la plupart d'entre elles se réfèrent à ce blog, ce qui est une bonne chose. Malheureusement, il ne semble pas du tout résoudre mes problèmes.
Dans TFSBuild.proj, j'ai un morceau de code qui ressemble à ceci :
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../mySolution.sln">
<Targets>SomeProject\Project</Targets>
<Properties>
CustomizableOutDir=true;
</Properties>
</SolutionToBuild>
Et pour autant que je puisse en juger, CustomizableOutDir est effectivement réglé sur true, ce qui devrait conserver la structure des répertoires. J'ai essayé d'éditer certains fichiers du projet comme indiqué dans le blog, comme ceci...
<Target Name="AfterCompile" Condition="'$(TeamBuildOutDir)' != ''">
<ItemGroup>
<CompileOutputs Include="$(OutDir)\**\*" />
</ItemGroup>
<Copy
SourceFiles="@(CompileOutputs)"
DestinationFolder=
"$(TeamBuildOutDir)\ProjectName\%(RecursiveDir)" />
</Target>
Mais cela se comporte bizarrement - si je modifie plusieurs fichiers de projet, je commence à obtenir ce qui suit regards J'obtiens une structure de répertoire qui contient des dossiers comme MyProj1 et MyProj2, mais MyProj2 semble avoir reçu tous les résultats de MyProj1 (MyProj1 fonctionne comme je l'espérais). De plus, le dossier de dépôt encore a tout le reste déversé en une seule fois (les répertoires contiennent des duplicatas de ce déversement).
Quelqu'un a-t-il une idée de la raison pour laquelle CustomizableOutDir ne se comporte pas comme prévu ? Ou y a-t-il un problème avec le code de mon fichier csproj ?