Domanda

Qual è il modo corretto per includere una potenza di una costruzione come un binario in un altro accumulo?

Diciamo che ho una soluzione chiamata CompanyName.Domain (il mio livello di dominio). Ce l'ho impostato come una build e nightly build.

Ora voglio aggiungere una soluzione chiamata SomeProject.Web. E voglio includere il binario di CompanyName.Domin in una cartella binari ad un livello pari con la mia soluzione. Poi il progetto SomeProjects.Web riferimento al file binari \ CompanyName.Domain.dll funzionerà.

Quello che è le migliori pratiche per fare questo? Conosco qualcuno che ha detto che stavano cercando di fare questo con ramificazione. Sono un totale "controllo del codice sorgente" newb. Ma qualcosa su questo suona male.

È stato utile?

Soluzione

Proprio come Daryl, usiamo una cartella "file binari" che facciamo riferimento binari da. Le nostre "biblioteche" costruisce solo XCOPY i risultati nella posizione binari, quindi se vogliamo aggiornare le librerie, ci basta controllare i binari, a costruire, e il check-in di nuovo.

Questo ci permette di condividere tutte le nostre biblioteche interne (così come tutte le librerie 3a parte che usiamo) da una singola postazione standard, e tutte le nostre biblioteche può essere precompilati, salvare i nostri sviluppatori dover costruire loro se non sono in realtà che cambia nulla nel libs.

Fare attenzione ad unico riferimento build di rilascio delle librerie (l'unica eccezione che abbiamo a questo è che abbiamo una libreria di debug aiutanti che sono condizionalmente compilato in build di debug solo, e noi dobbiamo fare riferimento alla versione di debug di esso altrimenti tutto il nostro debug è compilato fuori dal programma anche in build di debug!)

Un ultima nota:. Evitare ramificazione a meno che non v'è alcuna alternativa ragionevole

Altri suggerimenti

La mia azienda fa questo creando una cartella "Riferimenti" per contenere tutti i file dll necessari per costruire gruppi di riferimenti esterni, come per la squadra di cartella bin effettivamente ottenere salvato sotto il controllo di origine.

Usiamo il TFS Dipendenza Replicator , che può copiare i file a qualsiasi progetto in TFS dopo un progetto si basa . Non ha vero grande documentazione, ma sembra di fare ciò che si suppone dopo che lo ottenete l'installazione.

Il post sul blog Implementazione dipendenza replica con TFS team Build raccomanda la creazione di uno scenario ramificazione per aiutare con il monitoraggio che i progetti che utilizzano dipendenze, che ha senso per me, anche.

Il mio processo è simile a quello degli altri manifesti.

Dire che ho due progetti, li chiamano CoreProject e AppProject. CoreProject è condivisa. AppProject ha una cartella denominata SharedBinaries. Questo è dove tutti i riferimenti di assemblaggio puntano.

Il mio script TFSBuild per CoreProject è configurato per effettuare le seguenti operazioni:

-Get Ultime

-Costruire goccia a goccia zona (qualcosa di simile a \\ SERVER \ DropZone \ CoreProjectBuildNameAndNumber)

-drop viene copiato in una cartella nella zona di caduta (qualcosa di simile a \\ SERVER \ DropZone \ latest \ CoreProject)

Lo script TFSBuild per AppProject è configurato per effettuare le seguenti operazioni:

-Get Ultime

-Controllare fuori i file nella cartella SharedBinaries

I file -Copiare da \\ SERVER \ DropZone \ latest \ CoreProject

-Costruire

-drop di Drop Zone (qualcosa di simile a \\ SERVER \ DropZone \ AppProjectBuildNameAndNumber)

-Se la generazione viene eseguita correttamente la build viene copiato in una zona di cartella di ricezione (qualcosa di simile a \\ SERVER \ DropZone \ latest \ AppProject) ei file in SharedBinaries vengono controllati in

-Se la compilazione fallisce i file copiati in SharedBinaries hanno l'annullata cassa.

Ho trovato questo funziona davvero bene. AppProject è sempre costruendo con i bit più attuali da CoreProject, quindi sappiamo subito se c'è un cambiamento di rottura. Avendo SharedBinaries controllato in TFS posso ottenere una versione specifica ed eseguire il codice con gli stessi DLL da CoreProject che sono state utilizzate in quel momento. Inoltre devo solo per ottenere tutti i vantaggi ed mia macchina locale sta costruendo con le ultime punte pure.

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