2012-02-09 12 views
5

Ho un file .cs pieno di codice C# io continuo riutilizzo in più progetti.fanno riferimento al codice C# da più progetti

In questo momento mi sto includendolo in questi progetti copiando e incollando il codice in un nuovo file in ogni cartella di progetto. Questo è il errato modo per farlo.

qual è il right modo per farlo?

Il modo giusto dovrebbe:

  • mantenere il codice comune in un solo posto sul mio computer
  • e mantenere il legame fresco --- in modo che quando le modifiche del codice comuni, ogni progetto è a conoscenza di esso , la prossima volta ricompilerò quel progetto.

A caso indovinare, mi aspetto una sorta di direttiva come using mycode = C:\common\mycode.cs, ma sono sicuro che non è il modo .NET di fare le cose.

(sto usando C# 2010, NET 4.0, e solo la compilazione di questo codice in locale su un computer.)

risposta

6

Creare una libreria di classi, aggiungere il file, genera il progetto, e di riferimento la DLL creata dalla build. Aggiungi l'istruzione using a ogni file che farà riferimento ad esso. Inoltre, se si verificano errori e la DLL si trova nel progetto, fai clic con il tasto destro del mouse sull'oggetto -> Risolvi e verrà aggiunto l'utilizzo per te.

+0

Ho fatto tutto questo, ma ora non riesco a utilizzare le funzioni nella Libreria di classi. Ho bisogno di una sorta di direttiva 'using'? – Joe

+0

@Joe Sì, è necessario aggiungere il riferimento al progetto e quindi aggiungere l'utilizzo in ogni file che fa riferimento a una classe nella libreria. Quindi in alto usando [Namespace]. Anche Visual Studio può risolverlo facendo clic con il tasto destro del mouse se la DLL si trova nel progetto. –

+0

E ho anche bisogno di rendere le classi nel .dll public ... * facepalm * – Joe

8

mettere il codice in un progetto libreria di classi separata e di riferimento che nei vostri altri progetti.

6

Oppure,

destro del mouse sul progetto in Esplora soluzioni Selezionare Add Existing Item Individuare il file con estensione cs in un altro progetto, e solo clic per selezionare Fare clic sul pulsante freccia verso il basso a destra di Add e selezionare Aggiungi come collegamento

si dispone ora di un file sorgente a cui fa riferimento due progetti, ma ha lo spazio dei nomi che hai dato nel primo progetto che potrebbe non essere l'ideale.

Il modo migliore di organizzare ciò è come suggerito dalle altre due risposte, inserire codice comune in una libreria di classi in modo che abbia uno spazio dei nomi di MyClassLibrary piuttosto che SomeOtherProject. Si salva una copia più grande da copiare che non importa molto fino a quando non si arriva a sviluppare qualcosa di piccolo come Windows Phone. Oppure cambia lo spazio dei nomi del codice comune in Me.Common in tutte le tue app, non importa quale sia l'originale, puoi modificarlo da qualsiasi progetto che lo faccia riferimento.

Controllare che controllo del codice sorgente non è un problema.

+0

Non avevo idea di "Aggiungi come collegamento", grazie! Utile per piccoli progetti di test in cui non mi interessa di organizzare correttamente le mie 10 righe di codice in un progetto separato di libreria di classi. – Dan

0

ho scritto un app che consente di automatizzare l'aggiunta di un codice come un link, a portata di mano per i progetti che riutilizzano un sacco di codice e di cambiare un po '. E 'in https://github.com/CADbloke/CodeLinker

o

Non abbiate paura di modificare XML Csproj file. Ad esempio, questo funziona ...

<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs" 
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs"> 
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link> 
</Compile> 

... e vi darà tutti i file C# dalla cartella di origine, e sottocartelle, come file collegati nel progetto di destinazione.

  • $(Codez) è una variabile di ambiente Windows che utilizzo sui miei PC.
  • Avrei anche potuto usare *.* alla fine invece di *.cs.
  • Questa è una di quelle cose che Visual Studio potrebbe violare, aggiungendo un file nella cartella piena di file con caratteri jolly potrebbe suddividerli in voci separate. O no. Dipende dal vento
Problemi correlati