2009-08-17 16 views
8

Ho bisogno di aiuto per quanto riguarda la soluzione Visual Studio e l'organizzazione del progetto.Le migliori pratiche che organizzano una soluzione di Visual Studio

Ho una soluzione con diversi progetti. Tutti sono scritti in C# e sono compilati come librerie da utilizzare dalla GUI. Alcune di queste librerie hanno anche dipendenze con altre. Ad esempio, TestExecutive ha bisogno di LoggingFramework, anche le comunicazioni necessitano di LoggingFramework.

Qual è il modo migliore di organizzare? Sto pensando a una cartella assemblea per contenere i file binari delle librerie in un unico punto. Qualcosa di simile:

Solution 
    | 
    |-- TestExecutive 
    |-- LoggingFramework 
    |-- assemblies 

C'è anche un altro problema. Uno dei progetti utilizza una DLL C nativa. Dove devo posizionare questa libreria? Con l'assemblaggio delle librerie o con l'eseguibile finale?

EDIT:

Ok, ora supponiamo di avere il WinForms programma in esecuzione. Ho mescolato il codice sorgente e i binari. Di quali caratteristiche ho bisogno per generare qualcosa che posso distribuire? Voglio dire, con tutte le librerie e i file di configurazione, ma senza codice sorgente. L'ho già fatto con l'installer di Nullsoft, ma non so se Visual Studio può aiutarti a farlo.

+1

Uno dei tipi di progetto è un progetto di installazione. Aggiungilo alla tua soluzione. Ci sono molti tutorial sparsi sul web o su MSDN. – Clyde

+0

qualsiasi soluzione finale con esempio di codice sorgente completo a lavorare su di esso? – Kiquenet

risposta

8

Un paio di cose qui:

  1. Quando un progetto dipende da un altro, è possibile impostare che la dipendenza in Visual Studio. Fare clic con il tasto destro del mouse su un progetto e selezionare Dipendenze del progetto ...

  2. Per altri assembly .NET che NON fanno parte della soluzione (strumenti di terze parti, ecc.) Faccio esattamente quello che hai mostrato qui - Ho un separato cartella parallela ai progetti. Quindi ho impostato il riferimento all'assembly in ciascuno dei progetti con "Copy Local" impostato su true e funziona correttamente.

  3. Per le DLL locali C, è un po 'diverso. Non vi è alcun riferimento diretto a loro nella sezione dei riferimenti di Solution Explorer. Il compilatore non guarderà la dll per controllare i tuoi riferimenti p/invoke o qualcosa del genere. Devi solo assicurarti che la dll faccia parte della distribuzione sul tuo progetto Web o winform di livello superiore. È un file di contenuto proprio come un file css o un'immagine o qualcosa del genere. Basta aggiungere come file nel progetto e assicurarsi che il "Build Azione" è impostato al contenuto in modo che Visual Studio sa di basta copiare il file come parte della distribuzione

5

ho impostato le mie cartelle soluzione un po ' diversamente da te. Al livello superiore che hanno le seguenti cartelle:

\build 
\lib 
\src 

cartella La costruzione ha costruire script (NAnt, MSBuild, ecc). Qualsiasi assembly di terze parti (o qualsiasi cosa non sto creando nella soluzione) viene inserito nella cartella lib, in una sottocartella appropriata. Ad esempio, avrò le cartelle log4net, NUnit, RhinoMocks nella cartella lib, ciascuna contenente i file necessari per tale dipendenza. La cartella src ha la soluzione e tutti i file di progetto.

Mi piace questa struttura perché delinea chiaramente tra il codice del progetto e le altre cose richieste dal progetto. Inoltre, di solito organizzo alcune attività di compilazione personalizzate per copiare gli assembly risultanti per il mio progetto in una cartella \ deploy o \ lib \.In questo modo non devi cacciare nella cartella \ src \\ bin \\ per ottenere un assembly costruito o l'intero progetto; tuttavia questo sembra un po 'oltre la portata della tua domanda.

Btw ... Non sono venuto con questa struttura da solo, penso di aver iniziato a utilizzare Tree Surgeon e ho sviluppato il mio processo da lì.

+0

Non fuori dall'ambito dell'EDIT ;-) Grazie per le informazioni. – yeyeyerman

+0

La serie di blog "Albero dello sviluppo" del chirurgo albero è davvero buona. –

+0

Mi ci è voluto un po 'per scavare quei post. Puoi trovarli [qui] (https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/). – Ryogi

Problemi correlati