Es gibt default "Before" Ziele in MSBuild finden Sie unter: https://msdn.microsoft.com/en-us/library/ms366724.aspx
Dies ermöglicht es Ihnen, was auch immer "Setup" Prozesse, die Sie ausführen müssen, bevor die "CoreBuild" Ziel ausgeführt wird. so könnte man so etwas in Ihrem Projekt tun:
<Target Name="BeforeBuild">
<Exec Command="git.exe clone http://some/repo.git" />
</Target>
Dies setzt natürlich voraus, dass git an der Maschine und die von dem Systempfad installiert ist.
<ItemGroup>
<ReposToInclude Include="//first/repo.git" />
<ReposToInclude Include="//second/repo.git" />
<ReposToInclude Include="//third/repo.git" />
</ItemGroup>
<Target Name="BeforeBuild">
<Exec Command="git.exe clone %(ReposToInclude.Identity)" />
</Target>
Ein ItemGroup ist wie ein Array und das „%“ sind wie eine „foreach“ Erklärung: Sie können auch MSBuild „Items“ machen dies mehr „dynamisch“, zum Beispiel. Also wird dieser eine Exec über alle Repos iterieren und einen Git-Klon machen, oder ziehen, oder was auch immer es ist, was er tun muss.
Darüber hinaus möchten Sie möglicherweise mit "Bedingungen", die genau wie "IF" -Anweisungen in Code aussehen. Sie können also bedingt anhand bestimmter Kriterien einen Klon oder einen Pull erstellen.
Hoffe, das hilft.
Haben Sie versucht, die Repos in einem Post-Build-Event des Webprojekts zu ziehen? – stijn
Wäre es Post oder Pre? Ich würde davon ausgehen, dass Web-Projekt-Abhängigkeiten vor dem Web-Projekt erstellt werden? Außerdem habe ich niemals irgendwelche Arten von Skripten in Pre-/Post-Build-Events ausgeführt. Hättest du Beispiele dafür? – blgrnboy
Sorry, ja, vor. Das Skript wird über cmd.exe ausgeführt. Verwenden Sie also alles, was Sie in der Befehlszeile verwenden. msbuild-Variablen werden erweitert, so dass Sie z.B. 'git --work-tree $ (Projektverzeichnis) .. \ project1 --git-dir $ (Projektverzeichnis) .. \ project1 \ .git pull' – stijn