Domanda

Come posso ottenere la versione più recente della mia soluzione in modo ricorsivo come avviene nel menu contestuale di Solution Explorer di Visual Studio?Voglio farlo dalla riga di comando o tramite una macro.Sto cercando di automatizzare una parte della mia routine quotidiana utilizzando una serie di file batch.Sono sicuro che molti sviluppatori vorrebbero avere qualcosa di simile.

tf get ottiene solo il contenuto di una cartella in modo ricorsivo (non la soluzione).Non esamina le dipendenze del progetto e così via.Non funzionerà.

È stato utile?

Soluzione

TFS ha un SDK .Net che ti consente di creare i tuoi programmi personalizzati che interagiscono con un server TFS.Potresti scrivere un piccolo programma che svolga l'attività di cui hai bisogno:

TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer");

myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);

Altri suggerimenti

Sono d'accordo che Solution Explorer ometterà "in base alla progettazione" tutti questi oggetti, ma solo se non li includi come elementi della soluzione, cosa che credo tu Dovrebbe includere nelle tue soluzioni, in modo che un principiante possa aprire la soluzione, eseguire Ottieni le ultime novità e sapere di avere tutte le dipendenze necessarie per quella soluzione e non dover imparare come farlo tramite uno strumento da riga di comando o utilizzare il controllo del codice sorgente Explorer se non vogliono.

Includere tutte le dipendenze non di codice come elementi della soluzione (organizziamo le cartelle della soluzione utilizzando la stessa struttura di cartelle delle cartelle di controllo del codice sorgente) riduce la conoscenza "voodoo" richiesta per aprire e compilare la soluzione per i nuovi sviluppatori su un progetto.

Sarebbe utile se potessi collegare interi alberi di cartelle a una cartella della soluzione nella soluzione VS.

Se hai progetti dipendenti in una cartella diversa.Utilizzalo per scorrere tutte le sottodirectory per acquisire le ultime novità per ciascun progetto:

Inizia nella directory principale C:\Project\SupportingProjects

FOR /D %%G IN ("*") DO ECHO ..from....%%G && tf get C:\Projects\SupportingProjects\%%G 

::Get the latest for the Main project
tf get C:\Projects\MainProject /recursive 

Nel mio caso la cartella MainProject contiene il file della soluzione e il file del progetto.

L'ho trovato facile e semplice.

Maggiori informazioni sul comando FOR: http://ss64.com/nt/for_d.html

BENE...Sembra che tu abbia tre opzioni.

  1. Nel tuo file batch, emetti un tf get in ogni ramo di directory che desideri.

  2. riorganizza la tua soluzione in modo che tutte le dipendenze si trovino nello stesso percorso root.

  3. Utilizzare il modo visivo facendo clic con il pulsante destro del mouse sul progetto caricato e emettendo il comando get.

L'unico momento in cui è effettivamente a conoscenza della soluzione è quando il progetto viene caricato nell'IDE;o quando viene caricato dai server di compilazione.

So che hai menzionato i file batch, ma lasciami buttare fuori qualcos'altro per te.

Immagino che tu stia utilizzando la versione 2005 di TFS.Il 2008 ha tutte le attività di pianificazione integrate.

Tuttavia, potresti anche usare CruiseControl.net per eseguire build programmate per te.Ho usato sia TFS 2008 che CruiseControl ed entrambi sembrano funzionare bene.

Un'altra soluzione possibile è utilizzare PowerShell.Il collegamento seguente rimanda a un esempio di progetto di codice che mostra come ottenere una soluzione da TFS e compilarla localmente.Powershell è una soluzione molto migliore rispetto ai normali file batch.

http://www.codeproject.com/KB/install/ExtractAndBuild.aspx

Non farlo.VS non è così intelligente come pensi.(Come evidenziato dai misteriosi e inutili checkout che tutti hanno sperimentato per più di 3 cicli di prodotto, tu e io compresi.Questo non è il segno di un sistema affidabile!)

Ciò che descrivi funziona solo per riferimenti da progetto a progetto.L'esecuzione delle operazioni di controllo del codice sorgente da Solution Explorer "per progettazione" ometterà:

  • riferimenti dal progetto all'assemblaggio
  • video, audio, PDF e qualsiasi altro tipo di supporto che VS non supporta ma che potrebbe svolgere un ruolo fondamentale nel prodotto
  • File *.targets di MSBuild a cui si fa riferimento nei progetti
  • qualsiasi file di qualsiasi tipo a cui fanno riferimento destinazioni personalizzate
  • eventuali eseguibili di terze parti richiesti dal processo di compilazione
  • eccetera

Basta dire NO ad una sincronizzazione incompleta.Su quella strada ci sono solo mal di testa.

Esegui "tf get" senza ambito del percorso dalla riga di comando oppure fai clic con il pulsante destro del mouse -> Ottieni dal nodo $/ root in Source Control Explorer.

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