Domanda

Sto cercando di impostare un file common.targets con alcuni target msbuild comuni che voglio usare nelle build del mio team e quindi importare nei miei file TFSBuild.proj. Mi chiedo quale sia il modo migliore per raggiungere questo obiettivo? Devo archiviare common.targets proprio accanto a ciascun file TFSBuild.proj e quindi avere duplicati del file target per ogni build del team o esiste un altro modo? Preferirei non mettere il file target su ciascuna delle macchine di compilazione.

È stato utile?

Soluzione

Team Build ha una fase di bootstrapper prima che venga richiamato TFSBuild.proj in cui solo il TFSBuild.proj e altri file nella stessa directory vengono scaricati dal controllo del codice sorgente. Quindi, se vuoi che il tuo file target sia sotto il controllo del codice sorgente, devi metterlo nella stessa posizione di TFSBuild.proj

Maggiori dettagli in questa risposta

Non l'ho mai provato, ma potresti essere in grado di mettere il file target su una condivisione di rete e importarlo usando una condivisione unc. Qualcosa come

<Import Project="\\anothermachine\share\something.targets"/>

Ma ciò richiederebbe che l'account build e tutte le persone che eseguono build desktop abbiano accesso a quella condivisione di rete.

Altri suggerimenti

Mettilo in una posizione comune che ti piace nel controllo del codice sorgente. Prima di utilizzare gli obiettivi, fai un prelievo dal tuo file TFSBuild.proj in questo modo:

<PropertyGroup>
  <!--Path to the TFS Command Line (used for checkin and out)-->
  <TxTf>&quot;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf&quot;</TxTf>

  <WorkingDirectory>C:\YourPathHere<WorkingDirectory>
  <CustomProjTFSDir>&quot;$/YourProj/YourCustomProjPath&quot;</CustomProjTFSDir>
</PropertyGroup>

<Exec WorkingDirectory="$(WorkingDirectory)"
      Command="$(TxTf) get $(CustomProjTFSDir)"/>

La chiave di questo funzionamento è impostare un'area di lavoro per l'utente dell'agente di costruzione che punti alle tue cose personalizzate. Questa directory NON dovrebbe trovarsi nello stesso spazio delle normali build.

Vaccano

L'obiettivo di un file .targets comune è ridurre la duplicazione degli script. Se hai più copie di questo file sotto il controllo del codice sorgente, cosa succede quando è necessario modificarle (forse per aggiornare un percorso .exe)? Personalmente, preferisco una posizione separata per i file comuni a cui qualsiasi / tutti gli altri script di build possono fare riferimento. L'unico aspetto negativo di questo è che probabilmente codificherai il percorso di questo file.

È possibile memorizzarli insieme agli obiettivi MS in $ Volume \ Programmi \ MSBuild. Il vantaggio di ciò è che puoi creare un percorso relativo usando i metadati conosciuti integrati " $ (MSBuildExtensionsPath) \ Path \ To \ Your \ Targets "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top