2009-05-21 22 views
5

In un'applicazione .net che comprende più progetti in un'unica soluzione, ho un progetto con lo spazio dei nomi impostato su Company.Product.UI e un altro con Company.Product.UI.WebPages. Il mio problema è che due DLL derivano dalla costruzione dei due progetti. Come posso avere una singola DLL e conservare ancora la struttura attuale della soluzione. Io uso Visual Studio 2008 e C#.Singolo gruppo da più progetti

+1

Vedere anche http://stackoverflow.com/questions/1878807/visual-studio-2008-creating-single-dll-from-solution-with-many-projects –

risposta

11

Si dovrà inoltre fondere i due progetti in un unico progetto o utilizzare uno strumento come ILMerge per unire le assemblee risultanti in un unico gruppo.

ILMerge è un'utilità che può essere utilizzato per unire più assembly NET in un unico gruppo. È gratuito disponibile per l'uso dalla pagina Strumenti & Utilities nel Centro per sviluppatori Framework Microsoft .NET .

Se si desidera automatizzare ILMerge come un compito MSBuild allora vi suggerisco di dare un'occhiata a ilmerge-tasks:

interessati ad utilizzare ILMerge durante una compilazione automatica? ILMerge Compiti contiene due progetti realizzabili che consentiranno di accedere a ILMerge come attività da MSBuild e NAnt. Esso include anche un evento post-build che unisce ILMerge e la dll attività in modo da che è possibile utilizzare l'attività senza ILMerge.exe presente.

+1

Posso integrare ILMerge nel processo di generazione di Visual Studio in modo che io automatizzi il compito? – kjv

+0

@kjv Ecco cos'è il bit ilmerge-taks –

1

Immagino che è possibile creare un nuovo file di progetto che contenga tutti i file dei due progetti. In questo modo è possibile mantenere la struttura corrente per lo sviluppo e utilizzare il file di progetto unito per creare l'output da rilasciare dal progetto. I file di progetto sono file xml abbastanza semplici, quindi se ne apri uno in un editor di testo, probabilmente scoprirai come funzionano piuttosto rapidamente.

L'ovvio svantaggio di questo approccio è ovviamente la necessità di mantenere questo terzo file di progetto quando i file vengono aggiunti o rimossi in uno dei progetti, ma se ciò non accade molto spesso potrebbe funzionare piuttosto Beh io penso.

0

C'è un modo semplice per farlo, ma potrebbe non essere il modo migliore. Crea una nuova soluzione con il nome della DLL che desideri. Crea la struttura delle cartelle in questo progetto che è uguale ai nomi dei due progetti. Quindi, nella cartella specifica, fai un 'Aggiungi elemento esistente'. Aggiungi i file cs nel progetto con quel nome. Quando si aggiungono i file, selezionare "Aggiungi come collegamento" sul pulsante Aggiungi (c'è un menu a tendina in cui è possibile selezionare accanto al pulsante Aggiungi). Continua a farlo e costruisci. Avrai la DLL.

es. Se hai un progetto chiamato A e uno chiamato B e vuoi unirli in una DLL chiamata C. Crea un nuovo progetto chiamato C. Aggiungi una cartella in questo progetto chiamata A e un'altra cartella chiamata B. Ora dì che il progetto A ha un il file cs X.cs e B ne ha uno chiamato Y.cs. Nella cartella denominata A, fai clic con il pulsante destro del mouse e aggiungi Aggiungi elemento esistente. Vai al Progetto A e seleziona X.cs. Accanto al pulsante Aggiungi, vedrai una freccia in giù. Fare clic e selezionare Aggiungi come collegamento. Fai lo stesso per B. Costruisci questo progetto e otterrai dll nella cartella bin.

Problemi correlati