2010-02-15 9 views
6

Tal vez me estoy perdiendo algo obvio aquí, pero ....NET Dependencias de la Asamblea

he construido un proyecto genérico reutilizable biblioteca de clases C# decir (A.dll) que hace referencia a otros 3 asambleas dicen (B.dll, C .dll y D.dll)

Sin embargo, si quiero reutilizar mi componente A.dll en otro proyecto, todavía tengo que incluir las referencias a B.dll, C.dll y D.dll.

¿Hay alguna manera de que pueda configurar A.dll para construir todas sus dependencias en el archivo .dll así que no tengo que incluir los otros 3 ensamblajes?

Saludos

+0

Hay poca diferencia entre el envío de 4 ensamblajes o 1. Y con ensamblajes separados, mantiene intactas todas las versiones/firmas. –

Respuesta

6

Es posible fusionar las asambleas, con la función ILMerge:

C:\Program Files\Microsoft\ILMerge\ILMerge.exe /target:library /out:abcd.dll a.dll b.dll c.dll d.dll" 

Esto se fusionarán las DLL a, b, c y d en abcd.dll. También fusionará los símbolos de depuración pero no la documentación XML.

También tendrá que hacer referencia a la dll en sí en proyectos nuevos y no en los proyectos respectivos. Una excepción a esto es si combina las bibliotecas en un ejecutable, en ese caso puede hacer referencia a las respectivas bibliotecas/proyectos porque se cargarán con el ejecutable.

El Proyecto Mono también tiene una herramienta para esto, llamada mkbundle.

También está disponible ILRepack, que pretende ser compatible con ILMerge, pero es FLOSS.

+0

Sí, puedes hacerlo de esta manera. Pero no deberías (en general). –

+0

@Henk Holterman: ¿Por qué no? – Bobby

+0

Estás estropeando la versión y la información de la firma. Por una ganancia percibida. –

0

Esto sería algo así como el enlace estático de DLL que funciona bien con C++ nativo. Por lo que yo sé, no se pueden vincular estáticamente ensamblados en el código .NET, por lo tanto, debe incluir todas las DLL.

Cuestiones relacionadas