Come mantenere programmi interni / esterni quasi identici senza avere una base di codice separata per ciascuno?

4

Ho un programma su cui sto lavorando che la mia azienda utilizza internamente, ma viene anche inviato ai venditori. La versione del venditore sarà identica, tranne per il fatto che mancherà alcune funzionalità e utilizzerà un programma di installazione. Devo solo rimuovere 2 righe da un file XML, ed è buono per l'uso esterno.

Esiste un metodo "tipico" per creare un progetto come questo senza dover mantenere codebase separate per ogni progetto?

Se fa alcuna differenza, il programma è scritto in C #, sviluppato utilizzando Visual Studio 2010, compilato come dll, eseguito su Windows 7.

    
posta Brandon 28.12.2012 - 16:21
fonte

3 risposte

5

Is there some "typical" method to create a project like this without having to maintain separate codebases for each project?

Sono stati descritti approcci più complessi (configurazione, plug-in, ecc.). Tuttavia, per il tuo caso relativamente semplice potresti stare meglio usando un approccio diretto, ovvero automatizza ciò che fai manualmente :

  1. Mantieni una base di codice
  2. Aggiungi una cartella "config" con / vendor e / sottodirectory interne, ognuna contenente il file XML specifico da includere in ciascuna versione.
  3. Crea uno script di compilazione che accetti -internal o -vendor come parametro

Lo script di compilazione creerà quindi il software spedibile (ovvero il file di configurazione binario più) semplicemente copiando il rispettivo codice XML nella posizione corretta.

    
risposta data 28.12.2012 - 18:19
fonte
1

Questo sembra un approccio debole all'inserimento / esclusione della funzionalità. Tutto ciò che serve è un cliente per eseguire il backward-engineering del tuo programma e capire quali elementi XML aggiungere e hanno accesso alle funzionalità che desideri nascondere.

Un approccio migliore consiste nell'avere un sistema plug-in, in cui il software cerca un assembly che include le funzionalità extra, ma fallisce con garbo se tale assembly non è presente.

In questo modo non hai bisogno di una base di codice separata. Devi semplicemente installare lo stesso software ovunque e il tuo plug-in localmente.

    
risposta data 28.12.2012 - 16:26
fonte
1

Avrei un sistema di licenze dove basato sulla licenza che hai caricato diversi moduli \ attivati.

Ma l'intera base di codice è sempre la stessa.

    
risposta data 28.12.2012 - 16:30
fonte

Leggi altre domande sui tag