2012-10-16 14 views
8

Diciamo che abbiamo una squadra che lavora su molti progetti diversi. Ogni membro del team utilizza un insieme diverso di controlli/componenti visivi/non visivi durante il suo ciclo di sviluppo. Dal momento che Delphi richiede che ogni componente sia compilato e installato globalmente nell'IDE, come gestire questa situazione mentre si lavora con il progetto che è stato avviato dall'altro membro del team?Come gestire i componenti specifici del progetto in Delphi?

Sarebbe bello se potessi verificare le origini di un progetto dal controllo di versione e avere la possibilità di compilarlo immediatamente. Non mi interessa o, a volte, non so quali componenti visivi o non visivi sono richiesti per questo progetto, immagino che tutti dovrebbero essere inclusi nelle fonti del progetto.

Forse ci sono alcuni strumenti in grado di leggere il file di progetto principale o la directory e compilare/installare tutti i componenti necessari sul caricamento del progetto (e disinstallarli quando il progetto viene chiuso)?

Come gestisci questo problema in Delphi?

+2

Questa domanda potrebbe avere alcune risposte per voi: http://stackoverflow.com/questions/8957128/setting-up-a-large-software-system-in-delphi. Tuttavia, se è necessario modificare i moduli, non è possibile installare almeno i componenti visivi. Abbiamo aggiunto script al nostro controllo sorgente per automatizzare la disinstallazione e l'installazione delle chiavi rilevanti nel registro. Richiede ovviamente un riavvio IDE. –

+0

Di solito mantengo un file di pacchetto "tutti i componenti", accanto al codice sorgente di ogni progetto, contenente tutti i componenti che vengono utilizzati all'interno del particolare progetto. Devo solo aprire un singolo pacchetto e ricostruirlo, per assicurarmi che tutti i componenti necessari siano disponibili, prima di iniziare a lavorare sul codice sorgente del progetto stesso. – Elling

risposta

4

Chiunque desideri compilare un determinato progetto deve prima installare qualsiasi componente che il progetto sta utilizzando. Non c'è modo di aggirarlo, a meno che il progetto non includa direttamente il codice sorgente dei componenti e instanzia i componenti nel codice anziché utilizzare un DFM. AFAIK, non esiste uno strumento IDE che automatizzerà l'installazione di componenti (un) per ogni progetto per te.

+5

C'è un modo per ottenere questo risultato creando un plug-in IDE che rileva automaticamente se un "pacchetto di componenti specifici del progetto" deve essere ricompilato e lo installa nell'IDE quando il gruppo di progetto viene aperto e lo disinstalla quando il gruppo di progetto è chiuso. Ma per fare questo devi patchare e collegarti all'IDE perché OpenToolsAPI non è abbastanza ricco per farlo. Questo richiede anche che il pacchetto abbia un codice di finalizzazione pulito. –

+1

@AndreasHausladen Peccato che nessuno abbia mai realizzato un plugin IDE. – Linas

+0

"Chiunque desideri compilare un determinato progetto deve prima installare qualsiasi componente che il progetto sta usando ...". In realtà puoi compilare il progetto senza installare ma non puoi modificare i moduli. Se il modulo si sta lamentando basta premere cancel – Maksee

2

È molto saggio limitare i componenti e le librerie che verranno utilizzati dal team. Se ogni membro decide quale componente useranno, il tuo eseguibile o pacchetto finale crescerà molto e potresti avere alcune incompatibilità tra le librerie.

Inoltre, è possibile avere costi aggiuntivi per l'acquisto e l'aggiornamento di librerie molto simili. Ricorda che ogni volta che Delphi viene aggiornato, è necessario acquistare nuove licenze dalla maggior parte di quelle librerie.

Quindi l'approccio migliore è:

  • chiedono quali librerie ogni sviluppatore sta utilizzando e discutere con loro la reale necessità di ciascuno;

  • catalogare quelle librerie richieste e installarle sulla macchina per compilare il codice finale;

+2

Sono d'accordo sul fatto che il tuo approccio dovrebbe funzionare ... MA è IMO molto scomodo. Che cosa succede se lo sviluppatore ha realizzato un componente personalizzato per un solo progetto? Perché tutti gli altri sviluppatori devono installarlo? Anche in questo modo dovrei mantenere tutti questi componenti installati per essere sicuro che siano tutti aggiornati. Se l'IDE supportava l'installazione di componenti per progetti, tutti questi problemi potevano essere evitati. – Linas

5

Nella nostra azienda, abbiamo lo stesso problema. Risolviamo questo costringendo tutti ad aggiungere tutti i percorsi necessari alla loro delphi ide.

Stiamo utilizzando un repository sdk/framwork aggiuntivo che contiene tutti i componenti/sdk/framework di tutti. Manteniamo un singolo file di testo, elencando tutte le librerie con la sua versione, installa le informazioni, ecc. Ognuno controlla le loro librerie ricercate, quindi non abbiamo librerie doppie o versioni differenti.

Dato che lavoriamo tutti sotto Windows e dal momento che Delphi mantiene i suoi percorsi e (afaik) informazioni sul componente installato nel registro, abbiamo estratto queste informazioni. Memorizziamo per ogni versione delphi utilizzata un file .reg all'interno del trunk del repository sdk.

Quindi, se qualcuno cambia un framework, aggiorna le informazioni per tutti i file .reg e lo impegna.

ora, se qualcuno vuole configurare la propria macchina di sviluppo, esegue il check-out di sdk, aggiungendo ad es. XE2.reg informazioni al loro registro, quindi controlla il progetto e ... tada. compilazione.

Non abbiamo provato ad estrarre i pacchetti "componenti installati". questo è il nostro elenco di cose da fare. Un'alternativa sarebbe mantenere un file batch per creare e installare tutti i pacchetti sdk contemporaneamente. Ma non so se l'installazione di componenti tramite riga di comando è possibile in delphi.

Qualcosa come l'installazione JEDI sarebbe bello. Il programma di installazione rileva le versioni installate di Delphi e le build & installano tutto correttamente. Una versione liberamente configurabile sarebbe carina, quindi aggiungi tutti gli sdks -> installa su ciascuna versione .. perfetta.

Problemi correlati