2009-08-27 10 views
6

Vorrei mantenere i miei componenti/assiemi chiaramente separati da un punto di vista del codice sorgente ma ho anche bisogno in alcune circostanze (probabilmente non rilevante per espandere) di comprimerli nella stessa dll.C'è un modo per confezionare più di un assembly .NET in una DLL?

È possibile impacchettare un numero di assembly .NET in una singola DLL? Se é cosi, come?

Se possibile, pensi che sia una buona idea? Perché?

Qualsiasi aiuto apprezzato!

risposta

9

leggi questo articolo: Merging .NET assemblies using ILMerge


Come sapete, il collegamento tradizionale codice oggetto non è più necessaria in .NET. Un programma .NET di solito consiste di più parti. Una tipica applicazione .NET consiste in un assembly eseguibile , alcuni assembly nella directory del programma e alcuni assembly nella cache globale dell'assieme . Quando viene eseguito il programma, il runtime combina tutte queste parti in un programma . Il collegamento al momento della compilazione non è più necessario .

Ma a volte, si deve tuttavia utile combinare tutte le parti di un programma deve eseguire in un unico assemblaggio. Ad esempio, è possibile che sia necessario per semplificare la distribuzione dell'applicazione combinando il programma, tutte le librerie richieste e tutte le risorse in un singolo file .exe.

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs 
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb 
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb 

.

ilmerge /target:winexe /out:SelfContainedProgram.exe 
     Program.exe ClassLibrary1.dll ClassLibrary2.dll 
+0

Ma questo produce un file EXE, non una DLL (?) –

+1

stessa cosa dovrebbe essere fattibile con una dll come output - Immagino ... – JohnIdol

6

ILMerge può unire due assiemi in uno.

Vedere here per informazioni (gli esempi sono per il linguaggio incrociato, ma funzionerà su qualsiasi strumento creato dagli assembly).

Ovviamente qualsiasi dipendenza dai singoli assembly (pre-unione) dovrà essere aggiornata/reindirizzata.

Problemi correlati