Domanda

Sto lavorando su un modulo per un CMS.Questo modulo è distribuito come DLL della libreria di classi.

Ho diverse librerie di utilità che vorrei utilizzare in questo modulo.Esiste comunque la possibilità di collegare queste librerie staticamente in modo da non dover distribuire diverse DLL (distribuendo così le mie librerie di utilità separatamente)?

Vorrei avere una sola DLL.

È stato utile?

Soluzione

Puoi unire le tue numerose DLL con ILMERGE:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

Non l'ho provato personalmente.Spero che sia d'aiuto.


Scarica qui:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Breve descrizione (dalla pagina di download)
ILMerge è un'utilità per unire più assembly .NET in un singolo assembly .NET.Funziona sia su eseguibili che su DLL e viene fornito con diverse opzioni per controllare l'elaborazione e il formato dell'output.Per i dettagli consultare la documentazione allegata.

Altri suggerimenti

Se non vuoi utilizzare ILMerge, consulta questa pagina:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

nota dell'editore:Jeffrey Richter consiglia di inserire le DLL nel file exe come risorse (Per ogni file DLL che aggiungi, visualizza le sue proprietà e modifica la sua "Azione di creazione" in "Risorsa incorporata".).Quindi è necessario un caricatore di classi personalizzato per far funzionare l'eseguibile (In fase di esecuzione, CLR non sarà in grado di trovare gli assembly DLL dipendenti, il che rappresenta un problema.Per risolvere questo problema, quando l'applicazione viene inizializzata, registra un metodo di callback con l'evento ResolveAssembly di AppDomain).

Assicurati di cambiare il file resourceName stringa per puntare alle tue risorse effettive.(per esempio.modifica AssemblyLoadingAndReflection al nome del tuo progetto.)

La risposta breve è no!Non è possibile collegare una DLL durante la compilazione.Non so se esiste un modo sottile per farlo, ma probabilmente dovresti distribuire le DLL insieme al tuo cms.Il modo migliore per farlo è creare una sorta di ridistribuibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top