2010-10-19 14 views
32

Stiamo usando TFS e VS 2010.aiuto con TFS e riferimento DLL

Ho lavorato su un progetto che utilizza TFS come controllo del codice sorgente. Ho parecchie dll che ho scaricato (come log4net) e referenziato nel mio progetto.

Quando un nuovo programmatore si è connesso a TFS e ha ottenuto il mio progetto fuori dal controllo del codice sorgente, non è riuscito a creare come ha detto che mancavano tutte queste dll di riferimento.

Cosa ho fatto di sbagliato qui? Come posso includere quelle DLL referenziate nel controllo del codice sorgente. Devo aggiungere tutte queste DLL al mio progetto prima di farvi riferimento? quando li ho referenziati, ho semplicemente cercato dove erano sul mio file system.

Grazie!

risposta

45

Ho trovato che la migliore pratica per DLL di terze parti è quella di creare una cartella "Libreria" nella struttura del file sln/proj e copiare tutte le DLL necessarie in questa cartella locale come riferimento. Dovrai anche assicurarti che queste DLL siano controllate nel controllo del codice sorgente. In questo modo, chiunque lavora al progetto ottiene esattamente le stesse versioni di tutte le DLL e i percorsi di riferimento sono esattamente gli stessi.

Il riferimento a librerie di terze parti in un percorso di download o installazione arbitrario sarà problematico, poiché richiederà a tutti gli sviluppatori di mantenere la stessa struttura di download per tutte le DLL. Inoltre, se tutti fanno riferimento a DLL al di fuori della struttura del progetto, è più difficile garantire che tutti siano sulla stessa versione.

L'altra opzione sarebbe quella di avere tutti installare le DLL nella GAC, ma che può essere un vero e proprio dolore troppo, soprattutto con la gestione e la distribuzione di versione.

+2

Questo ha il vantaggio che ogni sviluppatore (nuovo o meno) potrebbe solo ottenere più recente, ha colpito F5, ed essere installato e funzionante, senza il "dove posso ottenere DLL X o come si installa DLL Y" –

+0

ho creato il cartella di libreria in 'sln', devo aggiungere tutti i riferimenti man mano che ottengo il progetto dal server. Sono nel modo sbagliato? – Mohsen

+0

Invece della cartella della libreria .. meglio gestirlo tramite il gestore di pacchetti NuGet a livello di soluzione. Sarei d'accordo sopra la soluzione solo nel caso in cui questi dll di terze parti non sono disponibili attraverso il nuget. –

1

Ho provato vari metodi per gestire questo problema e ho deciso di eliminare le dll richieste nella cartella bin e di assicurarmi che siano incluse nel progetto per il controllo del codice sorgente. Ho sentito dire che questa potrebbe non essere una buona idea, ma nessuno ha fornito buoni ragionamenti e ha funzionato bene per me.

La mia seconda scelta sarebbe quella di ritagliare uno spazio su una condivisione di rete e organizzare le varie dll di terze parti. Puoi mettere i tuoi file in cartelle con i numeri di verion per mantenere le cose dritte e tutti dovrebbero avere accesso a tutto ciò di cui hanno bisogno, a patto che tutti usino i normali percorsi di rete come riferimento.

Aggiunta di una cartella separata all'interno del progetto è anche praticabile, ma sembra disordinato, dal momento che si finisce con i file in più che non si desidera includere nel vostro comunicato.

2

Il suggerimento di Andy è buono e l'ho usato in passato. Al mio attuale lavoro, abbiamo una cartella "di riferimento" su una condivisione di rete per tutti noi da cui costruire. Abbiamo una rete molto veloce qui, però e tutti gli sviluppatori sono in un unico ufficio. Questa soluzione non funziona altrettanto bene se si hanno un sacco di sviluppatori remoti o una rete lenta.

7

ho creato una cartella "ThirdPartyDLL" nella mia cartella progetto in cui ho copiato tutte le DLL in più in esso. Allora sono entrato in esploratore di origine e aggiunto tali DLL nel server di Team Foundation in modo che potessi essere sicuro che sto utilizzando le versioni corrette delle DLL per le versioni specifiche di mia applicazione (e così tutti gli altri sono sulla stessa identica pagina come lo sono io).

View - altre finestre - Fonte coontrol esploratore di cartelle di progetto clic destro - aggiungere elementi alla cartella

Non sarà in grado di selezionare una cartella specifica con DLL in esso, ma invece è possibile selezionare la DLL individuale file all'interno della cartella. Verrà quindi visualizzata la cartella "ThirdPartyDLL" in quella finestra.

Una volta eseguita, queste DLL sono nel controllo del codice sorgente del team. Ogni volta che un dev esegue il check in, otterranno la versione più recente delle DLL.

Non dimenticare di rimuovere i vecchi riferimenti nell'app e di modificarli nella cartella di terze parti.

Ho usato per copiare le DLL nella cartella bin ma il problema che ho avuto è stato quando le DLL sono state aggiornate. Inizialmente, quando il mio progetto era piccolo, non era un grosso problema. Ora che ho più DLL e applicazioni che ho creato è diventato molto difficile mantenere versioni coerenti di DLL al di fuori del mio progetto. Il mio miglior esempio è la dll di licenza che ho acquistato. Quando questo è stato aggiornato, tutte le applicazioni e le librerie dovevano essere sulla stessa versione. Se ne dimenticavo uno, ho avuto strani problemi o l'applicazione ha smesso di funzionare. Ora che ho tutto in una cartella, apporto la modifica una volta e tutto viene aggiornato.

Spero che questo aiuti.