2010-04-19 5 views
28

Ho scritto una classe che gestirà la registrazione interna nella mia applicazione. Ora voglio usare questa classe in un altro progetto completamente separato.Condividi codice sorgente di classe C# tra più progetti

Potrei semplicemente copiare il file nella nuova cartella del progetto, ma mi piacerebbe avere solo una copia di esso da mantenere in modo che tutte le modifiche in esso si applichino a entrambi i progetti nel tempo.

Posso usare "aggiungi file esistente", ma dove inserisco il file in modo che lo sviluppatore successivo sappia che è necessario. Una volta ho avuto una cartella "condivisa" per questo, ma una volta quella cartella non è stata portata nel prossimo computer di sviluppo.

Qual è il modo migliore per organizzare questo in modo che abbia più senso per i nuovi manutentori e riduce al minimo il rischio di collegamenti interrotti nei progetti.

+1

Ragazzi volete davvero dirmi che la condivisione a livello di sorgente non è possibile in C#? –

+0

@Pavel: Questo problema non è proprio specifico per C# anche se cercavo qui una soluzione specifica per C#. Ho già riscontrato situazioni in cui mancavano singoli file in un progetto perché si trovavano in un'altra cartella non inviata con il resto dei file. – hultqvist

+0

Una risposta esatta a ciò che stai cercando può essere vista nel post di jorgen qui sotto. – user912447

risposta

25

È possibile creare un progetto di libreria che abbia questa classe in questo modo tutto ciò che si deve fare è aggiungere un riferimento a quel progetto.

Se questa opzione non è possibile, è possibile utilizzare "Clic destro -> aggiungi elemento esistente -> Aggiungi come collegamento" in questo modo si ha solo una copia del codice ma può esistere in più progetti.

+0

puoi per favore dare un'occhiata qui http://stackoverflow.com/questions/21301360/share-properties-from-child-app-to-base-project – Goofy

5

Rompere il codice di registrazione in un assieme separato.

È quindi possibile includere quell'assieme nei progetti che dovrebbero utilizzare tale registratore.

Mantiene tutto bello e pulito e dovrai solo mantenere un set di codice piuttosto che preoccuparti di ogni copia.

1

Creare un nuovo assieme che contenga questa classe.

Quindi tutti gli altri progetti possono fare riferimento a questo assembly e utilizzare la classe all'interno.

10

Una libreria di classi da condividere è la soluzione migliore.

Ma è possibile aggiungere un file a un progetto VS come collegamento anziché come copia. Per fare ciò utilizzare il menu a discesa sul pulsante Aggiungi del dialogo Aggiungi elemento esistente.

6

Se è effettivamente necessario condividere il codice sorgente, ad esempio se si dispone di una build simultanea a 32 bit ea 64 bit dello stesso assembly (che è talvolta necessaria se si dipende dal codice nativo), è possibile utilizzare la risposta data in questa discussione: How do you share code between projects/solutions in Visual Studio?

(Cercare ' 'link' un file di codice tra i due progetti'.)

1

Mettere la classe in uno spazio dei nomi unico, quindi aggiungere il file come un collegamento a tutti progetti che devi usare. Assicurati di inserire un'istruzione using per lo spazio dei nomi univoco in cui utilizzerai la classe, altrimenti dovrai qualificarti pienamente per ogni utilizzo. Per situazioni come questa, penso che sia molto preferibile rispetto a un assemply, dal momento che non genera inutili riferimenti incrociati, per qualcosa che è parte del tuo codice che desideri condividere tra i tuoi progetti.

0

È anche possibile utilizzare il proprio sistema di controllo delle versioni per eseguire questa operazione.

Generalmente creiamo la directory con la soluzione e il progetto principale e quindi impegniamo questa directory in SVN. Quindi tutte le librerie condivise sono collegate usando svn: external - quindi tutti i progetti sono presenti nella stessa directory di soluzione.

Dopo l'impegno, chiunque può eseguire il checkout della soluzione di lavoro con tutte le dipendenze esterne.